SQL SERVER 中把表名作为参数传递给存储过程后,怎么把表中的数据赋值给存储过程的变量?

CREATE PROC PRO
@TABLENAME VARCHAR(20)
AS
DECLARE @T INT
EXEC ('SELECT'+@T+'=START FROM '+@TABLENAME+'WHERE....)
怎么提示“=”附近有错误 高手帮忙啊

第1个回答  推荐于2018-04-11
获取结果不是这么写的

可以用下面这种写法:
DECLARE @T INT;
DECLARE @Sql NVARCHAR(200);
set @Sql = 'SELECT @T = START FROM ' + @TABLENAME + ' WHERE ...';
EXEC SP_EXECUTESQL @Sql, N'@T INT OUTPUT', @T OUTPUT;

参考资料:http://hi.baidu.com/wangzhiqing999/blog/item/6f6da5fee476db869f51465d.html

本回答被提问者和网友采纳
第2个回答  2011-08-01
在各关键词之间没有加空格分隔开 SELECT,FROM, WHERE前后都需要有空格
EXEC ('SELECT '+@T+'=START FROM '+@TABLENAME+' WHERE....)
第3个回答  2011-08-01
为什么要加“‘’”,在数据库中‘’是字符型的,去掉‘’和+
第4个回答  2011-08-01
@T 是一个变量,start是一个列。
相似回答