В 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-инъекции.