2012-05-21 4 views
1

Я пишу хранимые процедуры в SQL Server 2008. Мне нужно создать две процедуры, которые будут использовать друг друга.Объявление хранимых процедур заголовка и тела отдельно

Процедура A выполняет B и Б выполняет А.

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

Итак, мой вопрос: как я могу объявить заголовок и тело хранимой процедуры отдельно в SQL Server 2008?

+0

Если a исполняет b, который затем выполняет A, вы не собираетесь попасть в бесконечный цикл? – HLGEM

ответ

4

Вы не можете их разделить, но вы можете создать SP, который вызывает другой SP, который еще не существует.

При запуске этого

create procedure TheFirst as 
begin 
    exec TheSecond 
end 

и SP TheSecond не существует, вы получите сообщение:

Модуль 'TheFirst' зависит от отсутствующего объекта 'TheSecond'. Модуль будет создан; однако он не может успешно выполнить , пока объект не существует.

Update:

Чтобы избежать сообщений, которые вы можете сначала создать пустую процедурный и добавить код в сценарии.

create procedure ProcB as 

go 

create procedure ProcA as 
begin 
    exec ProcB 
end 

go 

alter procedure ProcB as 
begin 
    exec ProcA 
end 
+0

Хорошо, это жаль. Спасибо за ответ. Я проверю его вечером, если это будет правильно. – nosbor

+0

@nosbor Почему это жаль? Это означает, что он все равно будет работать. Или где вы ищете работу IntelliSense? Если это так, вы можете создать свой SP без кода. 'создайте процедуру yyy @ID int as', а затем используйте' alter procedure yyy ... ', если вы хотите добавить код. –

+0

Потому что, как вы сказали при запуске скрипта, который создает базу данных, вы получаете предупреждения. Но если alter proc будет работать без предупреждений, это мне подойдет. – nosbor

Смежные вопросы