В SQL Server как создать ссылочную переменную для таблицы?

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

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

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

UPDATE TableRef SET ... WHERE ...

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

любые предложения были бы полезный.

2 ответов


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

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

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


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

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

например

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

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