В SQL Server, как мне создать ссылочную переменную для таблицы? - PullRequest
7 голосов
/ 18 июня 2010

В настоящее время я использую sp_executesql для выполнения оператора T-SQL с динамическим именем таблицы.Тем не менее, действительно ужасно видеть что-то вроде:

set @sql = 'UPDATE '+Table_Name+' SET ... WHERE '+someVar+' = ... AND '+someVar2' = ...'
sp_executesql @sql

Я хотел бы иметь переменную TABLE, которая является ссылкой на таблицу, так что я мог бы сделать, например:

UPDATE TableRef SET ... WHERE ...

Потому что, когда у меня очень длинные операторы T-SQL, его очень трудно читать из-за формата в строке.

Любые предложения будут полезны.

Ответы [ 2 ]

1 голос
/ 18 июня 2010

Почему бы вам не передать параметры в sp_executeSQL вместо этого?

http://msdn.microsoft.com/en-us/library/ms188001.aspx

Я бы тоже прочитал эту статью http://www.sommarskog.se/dynamic_sql.html

0 голосов
/ 18 июня 2010

Вы не можете. Если вы хотите использовать динамическое имя таблицы в SQL, вам нужно объединить его в строку.

Если у вас много ссылок на имя таблицы в вашем запросе, вы можете сократить его, добавив псевдоним таблицы, а для всех остальных случаев используйте псевдоним.

, например

SET @SQL = 'UPDATE t SET.... FROM ' + @TableName + ' t WHERE ....'

Просто будьте очень, очень осторожны, когда используете такой динамический SQL. Убедитесь, что вы защищены от SQL-инъекций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...