【发布时间】:2011-05-14 14:44:38
【问题描述】:
我正在尝试将 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
我不能直接在临时变量中做这件事(对吗?)...
任何帮助表示赞赏!
【问题讨论】:
-
@workingdata 变量的内容是什么?
-
所有变量的内容是什么?我不认为这完全符合您的期望。
-
我使用@workingData TABLE 存储来自另一个过程的结果,该过程返回多个过程使用的通用结果集。这是为了减少冗余代码:INSERT INTO @workingData EXEC someProc
-
这个链接可能对stackoverflow.com/questions/7329996/…有帮助
标签: sql dynamic sp-executesql