Псевдоним таблицы SQL SERVER в хранимой процедуре - PullRequest
0 голосов
/ 23 октября 2011

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

Declare @target= (sometalbewithveryverylonganduglyname)
Declare @source= (anothertablewithaveryuglyverylongverybadname)

Select * from @target

Insert into @target select from @source

delete from @source

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

Ответы [ 3 ]

0 голосов
/ 23 октября 2011

Вы не можете делать то, что описываете, если не прибегаете к динамическому SQL, как предложил Yuck, но делать это ради того, чтобы не писать длинное имя таблицы, не является оправданным оправданием.SSMS уже включает в себя intellisense, а для SQL Server 2005 и ниже вы можете использовать один из многих бесплатных инструментов .Это должно уменьшить количество набираемых текстов и ошибок, связанных с ошибками.

Кроме того, вы всегда можете сделать select t.column1 from really_long_and_ugly_name t ...

0 голосов
/ 23 октября 2011

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

вариант 2) использовать представления, для которых они предназначены, чтобы скрыть базовые таблицы и разрешить изменения такого типа

0 голосов
/ 23 октября 2011

В T-SQL вы не можете сделать:

Select * from @target

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

exec ('Select * from @target')

Если вы просто хотите создать псевдоним таблицы, вы можете написать запрос следующим образом:

Select * from sometalbewithveryverylonganduglyname AS t

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

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