我一直在尝试从存储过程(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 声明,验证每列是否有名称。对于其他陈述,请查看 对于空别名。别名定义为""或[]是不允许的。 将别名更改为有效名称。
答案 0 :(得分:2)
我确信您在Insert.. EXEC
程序中有GetData
声明。 Insert.. EXEC
不能嵌套,这是Sql Server中的限制。
请查看以下文章,了解Erland Sommarskog在程序之间共享数据的各种方法