Member 11337367 Ответов: 3

Как запустить процедуру непрерывно?


У меня есть хранимая процедура, которая содержит много операторов select. Я хочу выполнять эту процедуру непрерывно, если между ними что-то не получается, она не должна останавливаться
все выбрать следует execute..is это возможно ?..

Что я уже пробовал:

Каким образом мы можем достичь этого ..

3 Ответов

Рейтинг:
0

Wendelius

Конечно, вы можете запрограммировать бесконечный цикл внутри процедуры, например, пока 1 = 1.

Однако я не могу представить себе ситуацию, когда это имело бы смысл. Например
- Элемент управления не возвращается в вызывающую программу до окончания выполнения
- Выполнение будет прекращено принудительно, когда наступит тайм-аут

Поэтому я предлагаю вам рассмотреть какой-то другой подход, который подходит вам, в зависимости от проблемы.


Member 11337367

Предположим, что в этом
выберите 5-'a'
выберите 4+3

если первое утверждение выдает ошибку, оно должно перейти ко второму утверждению

Andy Lanng

Вы можете использовать try block

Wendelius

Итак, проблема в том, что вы хотите продолжить работу, даже если возникнет ошибка pccurs.

Как уже отмечал Энди Лэнг, вы можете использовать обработку ошибок. Взгляните на ПРОБОВАТЬ...CATCH (Transact-SQL) | Microsoft Docs[^] и RAISERROR (Transact-SQL) | Microsoft Docs[^]

Рейтинг:
0

RickZeeland

Может быть, вы можете использовать Спусковой крючок(s) вместо этого см.:
[Триггеры -- SQL Server]


Рейтинг:
0

AlwzLearning

Если вы говорите, что хранимая процедура должна завершить свое выполнение, несмотря на ошибки, то напишите свою логику в блоке try - catch (как написано в комментариях). когда возникает ошибка ,в блоке catch вы можете поместить все свои ошибки , скажем, в некоторую error_table, детализирующую сообщение об ошибке и если какие-либо ключевые столбцы вы хотите сохранить, и он будет продолжать выполнять процедуру.

позже вы можете сделать select * from you error_table, чтобы увидеть сохраненные ошибки, с которыми столкнулся proc.