2013-08-07 2 views
3

Я пытаюсь выполнить хранимую процедуру непосредственно после ее создания, но не получает вызов. Похоже, что хранимая процедура еще не создана во время вызова исполнения.Как выполнить хранимую процедуру после ее создания?

Вот как сценарий выглядит следующим образом:

CREATE PROCEDURE sp_Transfer_RegionData 
AS 
BEGIN 
    INSERT INTO Region (regionName) 
    SELECT column1 
    FROM openquery(ITDB, 'select * from db.table1') 
END 

EXEC sp_Transfer_RegionData 

Скрипт работает нормально, однако требуется таблица не заполняется. После замены выполнения части с:

IF OBJECT_ID('sp_Transfer_RegionData') IS NOT NULL 
begin 

exec [dbo].[sp_Transfer_RegionData] 
print 'tada' 
end 

я мог видеть, что хранимая процедура не существует, когда она должна быть выполнена. Не удалось найти решение для этого в Интернете ...

Итак, как заставить скрипт SQL запускать синхронизацию, чтобы хранимая процедура уже существовала во время выполнения?

+0

Пожалуйста, и может мне сказал, что сообщение пришедший после создания процедуры? – jainvikram444

+0

Вам нужно 'GO' или' COMMIT'? – ProfessionalAmateur

+0

@vikramjain ошибки не возникает. Я получил команду (ы) успешно завершена. – CoffeeCode

ответ

7

Вам нужен GO после создания SP, иначе вы создали рекурсивный SP, который называет себя «неопределенно», что 32 раза в SQL Server.

Превышен максимальный объем хранимой процедуры, функции, триггера или уровня обнаружения вложенности (предел 32).

Попробуйте это:

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO    

CREATE PROCEDURE sp_Transfer_RegionData 
AS 
BEGIN 
    INSERT INTO Region (regionName) 
    SELECT column1 
    FROM openquery(ITDB, 'select * from db.table1') 

END 

GO 

EXEC sp_Transfer_RegionData 
+0

tnks GO выполнил эту работу! – CoffeeCode

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