如何在动态sql语句中使用表变量?
在我的存储过程中,我在我的过程之上声明了两个表变量。现在我试图在动态sql语句中使用该表变量,但是在执行该过程时出现此错误。我正在使用Sql Server 2008。
这是我的查询的样子,
set @col_name = 'Assoc_Item_'
+ Convert(nvarchar(2), @curr_row1);
set @sqlstat = 'update @RelPro set '
+ @col_name
+ ' = (Select relsku From @TSku Where tid = '
+ Convert(nvarchar(2), @curr_row1) + ') Where RowID = '
+ Convert(nvarchar(2), @curr_row);
Exec(@sqlstat);
我得到以下错误,
必须声明表变量“@RelPro”。
必须声明表变量“@TSku”。
我试图在动态查询的字符串块之外取表,但无济于事。
没有找到相关结果
已邀请:
8 个回复
号拳藐孔妇
淑灯
,但不能用于
示例语法如下。
包含
列只是为了证明子范围中引用的表变量绝对与外部范围而不是副本相同。
屑凉赦
炉挤仙挟
秃拳割
如 开始 - 添加SET NOCOUNT ON以防止出现额外的结果集 - 干扰SELECT语句。 设置NOCOUNT ON;
结束 走
峨躬坎抬焚
语法并在表名前加上#符号),并且可以在创建它的范围和动态语句的范围内访问它。 更新:请参阅Martin Smith的答案,了解如何使用表值参数将表变量传递给动态SQL语句。另请注意提到的限制:表值参数是只读的。
绵扇寸访
笛驮型迸