Я новичок в 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, то вы понимаете, что я пытаюсь здесь сделать. Я рассчитываю количество строк и время, затраченное на любой запрос.
в файле test.sql около 1000 запросов. Пожалуйста, помогите мне разобраться с этим
Спасибо.