В 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, становится действительно трудным читать из-за формата его в строке.

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

8
задан marc_s 23 June 2010 в 20:38
поделиться

2 ответа

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

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

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

1
ответ дан 6 December 2019 в 02:24
поделиться

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

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

например.

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

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

0
ответ дан 6 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: