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

CREATEPROCPRO@TABLENAMEVARCHAR(20)ASDECLARE@TINTEXEC('SELECT'+@T+'=STARTFROM'+@TABLEN... CREATE PROC PRO
@TABLENAME VARCHAR(20)
AS
DECLARE @T INT
EXEC ('SELECT'+@T+'=START FROM '+@TABLENAME+'WHERE....)
怎么提示“=”附近有错误 高手帮忙啊
展开
 我来答
wangzhiqing999
推荐于2018-04-11 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3336万
展开全部
获取结果不是这么写的

可以用下面这种写法:
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

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
0101至尊
2011-08-01 · 超过16用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:41.5万
展开全部
在各关键词之间没有加空格分隔开 SELECT,FROM, WHERE前后都需要有空格
EXEC ('SELECT '+@T+'=START FROM '+@TABLENAME+' WHERE....)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2fd3fc6
2011-08-01 · 超过25用户采纳过TA的回答
知道答主
回答量:77
采纳率:66%
帮助的人:41.5万
展开全部
为什么要加“‘’”,在数据库中‘’是字符型的,去掉‘’和+
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iou1006
2011-08-01 · TA获得超过345个赞
知道答主
回答量:289
采纳率:0%
帮助的人:164万
展开全部
@T 是一个变量,start是一个列。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式