【问题标题】:SQL Server Procedure Parameter Using [duplicate]SQL Server过程参数使用[重复]
【发布时间】:2015-09-08 15:05:45
【问题描述】:

我成功创建了一个过程,但在执行过程时使用参数时遇到问题

CREATE PROCEDURE TestProc 
     @table varchar(200)    
AS   
     UPDATE [test].[dbo].[@table]           
     SET [Column 9] = [Column 10]
     WHERE [Column 9] = 'Example1' 
        OR [Column 9] = 'Example2'     
GO

当程序像这样执行时

EXEC TestProc @table= '2015-07'

我想更新表格[test].[dbo].[2015-07]

有人知道如何解决这个问题吗?

【问题讨论】:

  • 不能将表格作为参数传递。在存储过程中使用动态 SQL 也不比在客户端上编写语句提供任何好处。实际上,在客户端创建参数化查询并在服务器上执行它是更安全

标签: sql-server stored-procedures parameters


【解决方案1】:

如果我正确理解您想将表的名称传递给过程并在过程中更新此表。尝试使用下面的代码,但它仅适用于具有 Column 9Column 10 的表

CREATE PROCEDURE TestProc @table varchar(200)    
AS   
DECLARE @SQL varchar(500)
SET @SQL = 'UPDATE [test].[dbo].[' + @table + ']           
            SET [Column 9]=[Column 10]
            WHERE [Column 9]= ''Example1'' OR [Column 9]=''Example2''' 
EXEC (@SQL) 
GO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多