如何在存储过程中动态指定表

htm*_*11h 0 sql stored-procedures sql-server-2008-express

感谢您的反馈,但我希望得到UPDATE命令的帮助,而不是SELECT.任何人都可以帮助UPDATE命令的语法吗?

我将表名传递给存储过程但SQL似乎无法识别它.

DECLARE @userTable AS VARCHAR(200);
SET @userTable = @currTable


UPDATE @userTable
SET     [lang_String] = @lang_String, [date_Changed] = @submitDate1
WHERE   (ID = @ID)
Run Code Online (Sandbox Code Playgroud)

@currTable被传递到存储过程.所有表名都是按代码设计构建的.

E.J*_*nan 5

你不能,你需要构建整个SQL字符串,然后执行它,例如:

DECLARE @sql nvarchar(4000)

SELECT @sql = ' SELECT col1, col2, col3 ' +
              ' FROM dbo.' + quotename(@tblname) +
              ' WHERE keycol = @key'

EXEC sp_executesql @sql, N'@key varchar(10)', @key
Run Code Online (Sandbox Code Playgroud)