我正在尝试在创建后直接执行存储过程,但是它没有被调用。看起来在执行调用期间尚未创建存储过程。
以下是脚本的外观:
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 :(得分:7)
创建SP后需要一个GO,否则你创建了一个递归的SP,它在SQL Server中无限期地调用了自己的32次。
最大存储过程,函数,触发器或视图嵌套级别 超过(限制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