我想在select语句中使用tablename变量,但是它给出了错误
-必须声明表变量“ @table”
alter PROCEDURE testTblName
(
@id int,
@name varchar(50)
)
AS
BEGIN
declare @table varchar(50)
declare @add varchar(150)
set @table = 'DBTest..testMaster'
select @add = address from @table where id=@id and name=@name
END
这是我的代码的快照
您不能为表名使用变量。执行此操作时,select address from @table
SQL期望@table
是表类型的变量,而不是标量。
您正在寻找做这样的事情:
ALTER PROCEDURE testTblName
(
@id INT,
@name VARCHAR(50)
)
AS
BEGIN
DECLARE @table VARCHAR(50),
@add VARCHAR(150),
@params VARCHAR(200),
@sql VARCHAR(200);
SET @params = '@add VARCHAR(50) OUTPUT';
SET @table = 'DBTest..testMaster'
SET @sql = 'SELECT @add = address FROM ' + @table + ' WHERE id=' + @id + ' AND name=' + @name
EXEC sp_executesql @sql, @params, @add OUTPUT;
...
...
END
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句