2017-06-16 84 views
2

我一直试图从存储过程(GetData)中将数据插入到临时表中,然后进行过滤。但不能得到这个工作,并得到一个错误信息无法将数据从存储过程插入到临时表中

一个INSERT EXEC语句不能嵌套。

存储过程(GetData)有一个存储过程在其中调用。

我试图创建一个存储过程脚本的功能,但我无法做到这一点,得到一个错误信息

无效使用了副作用的运营商“INSERT EXEC”的 函数中。

因此一直在试图找到一个解决方案,我可以得到这个工作。其他存储过程不能像程序中的几乎所有地方那样进行修改。

顺便说一句,我不会能够共享存储过程脚本。

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

然后让下面的错误信息

对象或列名不存在或为空。对于SELECT INTO 语句,请确认每列都有一个名称。对于其他语句,请查看 以获取空白别名。别名定义为“”或[]是不允许的。 将别名更改为有效的名称。

回答

2

我确定您在GetData程序中有Insert.. EXEC声明。 Insert.. EXEC不能嵌套,这是Sql Server中的限制。

检查下面的文章各种方法,通过厄兰Sommarskog

How to Share Data between Stored Procedures

共享程序之间的数据
相关问题