如何处理sybase

时间:2016-09-19 13:20:55

标签: sybase-ase15

我是Sybase新手。我使用的是Sybase的以下版本: Adaptive Server Enterprise / 15.0.3 / EBF 24162 ESD#4。

这里我试图在一次点击中运行多个查询。 我创建了一个perl脚本,它将每秒从sysMonSQLText捕获数据。完成后,它会生成test.sql文件。下面是该test.sql文件的示例数据:

declare @start_time datetime
declare @end_time datetime
declare @row_count INT


select 'Start - Query Number: 65000'
select @start_time = getdate()
SELECT 1
select @row_count = @@rowcount
select @end_time = getdate()
if ( @@error <> 0)
BEGIN
select (" SQL was not executed successfully. Error Code:  " + (SELECT CONVERT(varchar(10),@@error)))
END
Else
Begin
select ("Query number 65000 - Time took to execute the Query: " + ( SELECT CONVERT(varchar(10000), (select datediff(ss, @start_time, @end_time)) ) ) + ", number of rows retrieved: " + ( SELECT CONVERT(varchar(10000),@row_count)) + ", on  " + ( SELECT CONVERT(varchar(10000),@@servername) ) )
END
select 'End - Query Number: 65000'

select 'Start - Query Number: 65001'
select @start_time = getdate()
select * from table_1
select @row_count = @@rowcount
select @end_time = getdate()
if ( @@error <> 0)
BEGIN
select (" SQL was not executed successfully. Error Code:  " + (SELECT CONVERT(varchar(10),@@error)))
END
Else
Begin
select ("Query number 65001 - Time took to execute the Query: " + ( SELECT CONVERT(varchar(10000), (select datediff(ss, @start_time, @end_time)) ) ) + ", number of rows retrieved: " + ( SELECT CONVERT(varchar(10000),@row_count)) + ", on  " + ( SELECT CONVERT(varchar(10000),@@servername) ) )
END
select 'End - Query Number: 65001'

select 'Start - Query Number: 65002'
select @start_time = getdate()
select * from table_2
select @row_count = @@rowcount
select @end_time = getdate()
if ( @@error <> 0)
BEGIN
select (" SQL was not executed successfully. Error Code:  " + (SELECT CONVERT(varchar(10),@@error)))
END
Else
Begin
select ("Query number 65002 - Time took to execute the Query: " + ( SELECT CONVERT(varchar(10000), (select datediff(ss, @start_time, @end_time)) ) ) + ", number of rows retrieved: " + ( SELECT CONVERT(varchar(10000),@row_count)) + ", on  " + ( SELECT CONVERT(varchar(10000),@@servername) ) )
END
select 'End - Query Number: 65002'

GO

我正在运行isql命令来执行该文件,下面是命令:

isql -S Serevr_name -U user_name -P password_ -D FIRM_ -i C:\path\test.sql -o C:\path\test.log

如果所有查询都有效,我的意思是如果查询没有语法错误,那么它的工作正常。但如果任何查询出现任何错误,那么它只显示日志文件中的所有错误。

但是我想要的是,如果语法或逻辑上有任何错误,那么应该在日志上打印并进行另一次查询。

如果你看到test.sql文件,那么你就明白我在这里要做什么了。 我正在计算任何查询的行数和时间。

test.sql文件中有大约1000个查询。 请帮助我解决这个问题

感谢。

1 个答案:

答案 0 :(得分:0)

刚开始出现第一个明显的问题:在getdate()的变量赋值之后检查@@ error永远不会是'true':这个语句根本不会导致错误。

您可能需要重新考虑您想要捕捉的问题。