Как обрабатывать синтетические ошибки в Sybase

Я новичок в Sybase. Я использую приведенную ниже версию Sybase: Adaptive Server Enterprise/15.0.3/EBF 24162 ESD#4.

Здесь я пытаюсь выполнить несколько запросов в один клик. Я создал Perl-скрипт, который будет захватывать данные из sysMonSQLText каждую секунду. и работает нормально. После завершения perl он генерирует файл 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, вы понимаете, что я пытаюсь сделать здесь. Я рассчитываю количество строк и время, затраченное на любой запрос.

Есть около 1000 запросов в файле test.sql.. PLZ, помогите мне разобраться в этом

Благодарю.

1 ответ

Просто начнем с первой очевидной проблемы: проверка @@error после присвоения переменной getdate() никогда не будет 'true': этот оператор просто не может привести к ошибке.

Возможно, вам придется переосмыслить, какие проблемы вы пытаетесь уловить.

Другие вопросы по тегам