Обработка ошибок хранимой процедуры с известными ошибками, вызываемыми из vb.net

У меня есть sql server2000 зашифрованная хранимая процедура. Я не могу их изменить. Как правило, все процедуры манипулируют построчно различными таблицами с помощью курсоров и т. Д.

Когда хранимая процедура выполняется на экране Query Analyzer, я вижу ошибку, возникающую между ними, но процедуры продолжаются до тех пор, пока все записи не будут обработаны. Такое поведение приемлемо для клиента.

Теперь мне нужно автоматизировать процесс с помощью приложения Windows VB.net 2002. Я вызываю процедуру с vb.net, но программа выдает ошибку времени выполнения при первом появлении ошибки в хранимой процедуре.

Может ли кто-нибудь подсказать мне, как обрабатывать и программировать обработку ошибок, чтобы продолжить обработку, пока не будут обработаны все записи. Я буду очень признателен за вашу помощь.

2 ответа

Так как хранимая процедура зашифрована и вы не можете ее изменить. Одним из вариантов будет создание другой хранимой процедуры, которая будет действовать как оболочка для зашифрованной.

Пример... псевдо-TSQL

CREATE PROCEDURE MyWrapperProc
(
   @MyParameters somedatatypes
)
EXEC MyEncrytedStoreProc @MyParameters

Затем измените ваш вызов VB.NET с помощью процедуры Wrapper. В SQL 2000 нет TRY-CATCH. Я думаю, что это должно позволить запускать процесс Encrypted без всплывающей ошибки до вашего кода VB.NET, если вы явно не вызовете ошибку.

Я не уверен, как это сделать в.Net 1.0.

В 2.0 и позже я бы установил FireInfoMessageEventOnUserErrors свойство соединения с True и обрабатывает событие InfoMessage. Но быстрая проверка MSDN показывает, что они недоступны до .Net 2.0 и 1.1 соответственно.

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