首先我试着解释一下情况。 我将过滤器表达式存储在由换行符分隔的一列中。基本思路是这样的:为什么不能在另一个存储过程调用的存储过程中使用INSERT EXEC语句?
SELECT
'SELECT ''' + REPLACE(topic_filter,CHAR(10),''' UNION ALL SELECT ''') + ''''
FROM dbo.topic_filter T
WHERE
T.id = @id
FOR XML PATH('')
在此之后,我只是执行此字符串将数据放入临时表。 我的问题从这里开始。 该片段位于存储过程中,并被多个存储过程用于生成要填充的基础源。
方法1:
从另一个SP调用此sp来填充临时表。
结果1:
INSERT EXEC语句不能嵌套。 (如果我以exec DBO调用只是......风格的代码工作,我只当我尝试在存储过程中调用get错误)
方法2:
我把上面的代码插入到表值函数。
结果2:
函数内副作用运算符'INSERT EXEC'的无效使用。 (函数本身不编译)
感谢,
彼得
这不起作用。至少在MS Transact SQL 2008中。 – Jackson 2013-03-05 21:47:38