我有一个块代码来创建一个过程:
CREATE PROCEDURE GetTableinfomation
@table nvarchar(50),
@column nvarchar(50),
@valuedk nvarchar(50)
AS
BEGIN
SELECT *
FROM @table
WHERE @column = @valuedk
END
我有一个错误。
Msg 1087,Level 15,State 2,Procedure GetTableinfomation,Line 7
必须声明表变量“@tenbang”。
为什么?
答案 0 :(得分:2)
您不能将SQL参数用于表名和列,仅用于变量。
您可以使用动态SQL来解决这个问题:
DECLARE @SQL nvarchar(4000)
DECLARE @PARAMS nvarchar(4000)
SET @SQL = 'SELECT * FROM '
+ QUOTENAME(@table,'"') + ' WHERE '
+ QUOTENAME(@column,'"') + '= @param1'
SET @PARAMS = '@param1 nvarchar(50)'
EXEC sp_executesql @SQL, @PARAMS, @param1=@valuedk
有关详细信息,请参阅sp_executesql
上的文档: