我一直在尝试从存储过程(GetData)获取数据插入临时表然后进行过滤。但无法使其正常工作并收到错误消息
An INSERT EXEC statement cannot be nested.
存储过程(GetData)有一个在其中调用的存储过程。
我尝试使用存储过程脚本创建一个函数,但无法执行此操作并收到错误消息
Invalid use of a side-effecting operator 'INSERT EXEC' within a function.
因此,我一直在努力寻找一个可以使其正常工作的解决方案。其他存储过程无法修改,因为程序中几乎很多地方都使用了该存储过程。
顺便说一句,我无法共享存储过程脚本。
DECLARE @FromDate datetime
DECLARE @ToDate datetime
DECLARE @List VARCHAR(Max)
DECLARE @Filter VARCHAR(Max)
SET @FromDate = '1 July 2016 ';
SET @ToDate = '30 December 2017';
SET @List = '1,2,3,4';
SET @Filter= 'Manager, Staff'
DECLARE @Temp_Stage_Measurement TABLE
(
ClientID int,
Status varchar(255),
Declining varchar(255), Eligible varchar(255),
NotEligible varchar(255), Reapplying varchar(255)
)
INSERT @Temp_Measurement EXEC GetData @FromDate,@ToDate, @List
--Get a error message "An INSERT EXEC statement cannot be nested." as GetData has another
--INSERT EXEC which inturn calls other store procedure which cannot be modified as used in almost many places in the program
SELECT * FROM @Temp_Measurement
WHERE @Filter is null or Reason IN (@Filter)
甚至尝试替换以下语句:
INSERT @Temp_Measurement EXEC GetData @FromDate、@ToDate、@List
使用SELECT * INTO #Temp_Measurement EXEC GetData @FromDate、@ToDate、@List
然后收到以下错误消息
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
最佳答案
我确信您在 GetData
过程中有 Insert.. EXEC
语句。 Insert.. EXEC
不能嵌套,这是 Sql Server 中的限制。
查看下面的文章,了解 Erland Sommarskog 编写的在程序之间共享数据的各种方法
关于sql - 无法从存储过程将数据插入临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44581366/