将TABLE变量传递给sp_executesql
我正在尝试将TABLE变量传递给sp_executesql过程:
DECLARE @params NVARCHAR(MAX)
SET @params = '@workingData TABLE ( col1 VARCHAR(20),
col2 VARCHAR(50) )'
EXEC sp_executesql @sql, @params, @workingData
我收到错误:
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'TABLE'.
我尝试在'TABLE'之后省略列规范。我还尝试将表声明为动态SQL中的变量。但没有运气......
在我看来,TABLE变量不允许在此过程中作为参数传递?顺便说一句:我正在运行MSSQL2008 R2。
我对使用像#workingData这样的本地临时表不感兴趣,因为我从另一个过程加载了工作数据:
INSERT INTO @workingData
EXEC myProc @param1, @param2
哪个我不能直接进入临时变速器(对吧?)......
任何帮助赞赏!
没有找到相关结果
已邀请:
4 个回复
誓猎贰
或使用存储在数据库中的现有表类型。 使用此查询可查找现有表类型
要在存储过程中使用,请将输入变量声明为表:
在传递给存储过程之前填充表变量:
调用存储过程:
在此进一步讨论。
破弯
必须有更好的方法将此临时结果集传递给sp_executesql!? 问候 亚历克斯
味芯憨
因此,将代码更改为如下所示:
问候, 蒂姆
磐剩
请注意,上面的代码不能作为表工作,因为对象超出了范围。它会给你错误:必须声明表变量。为了解决方法,我们可以执行以下操作。