Perl Sybase: захватить печать хранимой процедуры и выбрать оператор - PullRequest
0 голосов
/ 19 мая 2011

У меня есть хранимая процедура, в которой много операторов печати, и она приводит как оператор печати, так и набор результатов

как мне захватить оператор печати и выбрать оператор отдельно, используя perl и (DBI / DBD или CTLib илиDBLIB)

1 Ответ

1 голос
/ 19 мая 2011

http://search.cpan.org/~mewp/DBD-Sybase-1.12/Sybase.pm#syb_err_handler_(subroutine_ref) говорит:

syb_err_handler (ссылка на подпрограмму)
Этот атрибут используется для установки специального обратного вызова обработчика ошибок (то есть подпрограммы perl), который вызывается до того, как обычный обработчик ошибок выполнит свою работу. Если эта подпрограмма возвращает 0, то ошибка игнорируется. Это полезно для обработки операторов PRINT в Transact-SQL , для обработки сообщений с сервера резервного копирования, вывода showplan, вывода dbcc и т. Д. [Выделено мое]

И показывает следующий способ справиться с этим:

$dbh = DBI->connect('dbi:Sybase:server=troll', 'sa', '', 
                { syb_err_handler => \&err_handler });

Еще одна вещь, которую я использовал, зная, что мои процессы будут в основном вызываться из perl, это «выбрать» весь печатный вывод с первым столбцом «Message:» и вторым столбцом как сообщение, которое я хотел напечатать. Я даже создал своего рода функцию printf-from-the-database вокруг этого.

...