|
Порядок работы хранимой процедуры
|
|||
---|---|---|---|
#18+
Добрый день. Подскажите пожалуйста ответ на два вопроса. 1. Как в хранимой процедуре указать последовательность действий? В обычном скрипте запроса можно использовать 'go'. В хранимке же 'go' не работает а только ';'. Есть подозрение, что ';' не разделяет последовательность действий так как возникает ошибка блокировок которой нет если запустить этот же скрипт просто вручную (не в хранимке). 2. Если есть несколько хранимок как их запустить одной хранимкой в четкой последовательности (после того как отработала первая - запускается вторая и т.д.). Спасибо. SQL ver.2008R2 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 12:42 |
|
Порядок работы хранимой процедуры
|
|||
---|---|---|---|
#18+
Pallich 1. Как в хранимой процедуре указать последовательность действий? В обычном скрипте запроса можно использовать 'go'. В хранимке же 'go' не работает а только ';'. Есть подозрение, что ';' не разделяет последовательность действий так как возникает ошибка блокировок которой нет если запустить этот же скрипт просто вручную (не в хранимке). Pallich 2. Если есть несколько хранимок как их запустить одной хранимкой в четкой последовательности (после того как отработала первая - запускается вторая и т.д.). exec ПерваяПроцедура exec ВтораяПроцедура и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 12:50 |
|
Порядок работы хранимой процедуры
|
|||
---|---|---|---|
#18+
Pallich ... 1. Как в хранимой процедуре указать последовательность действий? В обычном скрипте запроса можно использовать 'go'. В хранимке же 'go' не работает а только ';'. Есть подозрение, что ';' не разделяет последовательность действий так как возникает ошибка блокировок которой нет если запустить этот же скрипт просто вручную (не в хранимке). 2. Если есть несколько хранимок как их запустить одной хранимкой в четкой последовательности (после того как отработала первая - запускается вторая и т.д.). ... 1. Все команды процедуры выполняются в порядке их следования друг за другом (если нет явных if then else и goto). go - это разделитель блоков в скрипте. В процедуре необходимости в нем нет. 2. Пишете новую процедуру, состоящую из команд exec <Процедура 1>; exec <Процедура 2>; ... exec <Процедура 3> В чем проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 12:50 |
|
Порядок работы хранимой процедуры
|
|||
---|---|---|---|
#18+
Александр Спелицин, В процедуре есть цикл WHILE с условием. Когда запускаю этот скрипт вне процедуры - все нормально отрабатывает. если же скрипт в процедуре - вылетает ошибка блокировок: сообщение: 1205, уровень: 13, состояние: 80, процедура: PROC, строка: 32 [строка начала пакета: 10] Транзакция (идентификатор процесса 62) вызвала взаимоблокировку ресурсов поток | буфер связи с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно. У меня подозрение, что как то все одновременно пытается выполнить процедура. Не знаю как быть( ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 12:58 |
|
Порядок работы хранимой процедуры
|
|||
---|---|---|---|
#18+
Pallich, другие процессы же есть на сервере, которые используют те же таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 13:15 |
|
Порядок работы хранимой процедуры
|
|||
---|---|---|---|
#18+
Pallich У меня подозрение, что как то все одновременно пытается выполнить процедура. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 13:18 |
|
Порядок работы хранимой процедуры
|
|||
---|---|---|---|
#18+
Владислав Колосов, Теоретически есть. Можно как то выполнять хранимку независимо от них? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 13:21 |
|
Порядок работы хранимой процедуры
|
|||
---|---|---|---|
#18+
Pallich, Если вам нужно гарантированное выполнение процедуры, ловите ошибку 1205 через try-catch, ставьте флаг (переменную) ошибки и выполняйте GOTO на начало пока не выполнится. Или копайтесь, выясняйте, что является причиной взаимоблокировки. Решение зависит от потребностей. Графы взаимоблокировок можно увидеть в Profiler, включив соответствующее событие для просмотра. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 13:28 |
|
|
start [/forum/topic.php?fid=46&fpage=38&tid=1685256]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 324ms |
total: | 490ms |
0 / 0 |