程序错误“必须声明表”

时间:2012-05-10 15:48:57

标签: sql procedure

我有一个块代码来创建一个过程:

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”。

为什么?

1 个答案:

答案 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上的文档: