首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以表名为参数的存储过程

以表名为参数的存储过程
EN

Stack Overflow用户
提问于 2011-05-04 00:23:00
回答 2查看 36.4K关注 0票数 4

我有一个存储过程,我希望将该表的行数分配给一个变量,然后使用该变量。

我称之为这样的程序:

代码语言:javascript
复制
EXEC TEST.dbo.myProc nameOfTable

这一程序类似于:

代码语言:javascript
复制
CREATE PROCEDURE myProc @table_name varchar(1024) AS
BEGIN
    DECLARE  @Nval INT
    /*  SOME INSTRUCTIONS */

    SELECT   @Nval  = COUNT(*) FROM @table_name 
END 

在执行时,我得到了一个错误:

Msg 156,15级,状态1,过程nLQ,第57行 关键字“FROM”附近的语法不正确。

如何分配变量@Nval

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-20 08:09:07

尝尝这个

代码语言:javascript
复制
ALTER PROCEDURE [dbo].[sp_tablenametest]
@table_name varchar(50),
@PMId int,
@ValueEq int

AS
BEGIN
SET NOCOUNT ON;

DECLARE @cmd AS NVARCHAR(max)
SET @cmd = N'SELECT * FROM ' + @table_name + 
' WHERE Column1 = ''' + @PMId +  '''' +
' AND Column2= ''' + @ValueEq + ''''

EXEC sp_executesql @cmd 
END
票数 10
EN

Stack Overflow用户

发布于 2011-05-04 00:27:21

FROM @table_name,您不能像这样参数化一个表名。唯一的方法是执行动态TSQL。

在此之前,请阅读:动态SQL的诅咒与祝福

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5877207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档