Псевдоним имени таблицы T-SQL - PullRequest
5 голосов
/ 03 марта 2011

В моем скрипте T-SQL я ссылаюсь на одно и то же длинное имя таблицы несколько раз. Я использую этот запрос в разных таблицах.

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

Ответы [ 3 ]

8 голосов
/ 03 марта 2011

Пара вариантов.

В одном операторе SQL вы можете использовать псевдонимы таблиц, например:

SELECT * 
FROM MySuperLongTableName T
WHERE T.SomeField=1

Если вам нужно сделать это по множеству операторов в нескольких сценариях, лучше использовать синоним:

CREATE SYNONYM SuperT FOR dbo.MySuperLongTableName
1 голос
/ 03 марта 2011

Вы можете сделать это так:

Declare @TableName As nvarchar(max)
Declare @SQL AS nvarchar(max)
@TableName = 'longtablename'

@SQL = 'Select * From ' + @TableName
EXEC(@SQL)
1 голос
/ 03 марта 2011

Вы можете создать синоним для этой таблицы, но очевидно, что вам нужно убедиться, что никто не изменил определение синонима во время работы скрипта (и не вызывал параллельные вызовы скрипта)

Работаете ли вы в SSMS? Если это так, вы можете установить режим SQL CMD (в меню «Запрос») и использовать

:setvar tablename "spt_values" 

use master

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