以表名作为参数的存储过程
我有一个存储过程,我想将该表的行数分配给一个变量,然后使用该变量。
我调用的过程如下:
EXEC TEST.dbo.myProc nameOfTable
该过程类似于:
CREATE PROCEDURE myProc @table_name varchar(1024) AS
BEGIN
DECLARE @Nval INT
/* SOME INSTRUCTIONS */
SELECT @Nval = COUNT(*) FROM @table_name
END
执行时出现错误:
消息 156,级别 15,状态 1,过程 nLQ,第 57 行
关键字“FROM”附近的语法不正确。
如何分配变量@Nval
?
I have a stored procedure, and I would like to assign the number of rows of that table to a variable and later use that variable.
I am calling the procedure like:
EXEC TEST.dbo.myProc nameOfTable
The procedure is something like:
CREATE PROCEDURE myProc @table_name varchar(1024) AS
BEGIN
DECLARE @Nval INT
/* SOME INSTRUCTIONS */
SELECT @Nval = COUNT(*) FROM @table_name
END
When executing I am getting an error:
Msg 156, Level 15, State 1, Procedure nLQ, Line 57
Incorrect syntax near the keyword 'FROM'.
How would I assign the variable @Nval
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不能像
FROM @table_name
这样参数化表名称。唯一的方法是执行动态TSQL。在此之前,请阅读:动态 SQL 的诅咒与祝福
You can't parameterise a table name like that,
FROM @table_name
. Only way is to execute dynamic TSQL.Before you do that, read: The Curse and Blessings of Dynamic SQL
试试这个
try this