TSQL: глобальная переменная скрипта? - PullRequest
4 голосов
/ 22 апреля 2010

Я использую переменные в моих запросах TSQL. Поскольку мой сценарий вырос, я разделил каждую часть на GO, теперь проблема в том, что мне нужен доступ к переменным вверху моего сценария.

Как я могу получить доступ к этим переменным?

Надеюсь, это что-то простое и понятное.

Спасибо всем

Ответы [ 3 ]

8 голосов
/ 22 апреля 2010

GO используется для разделения пакета t-sql, переменные имеют локальную область видимости и видны только в пакете или процедуре, где они определены.

Лучше всего, вероятно, хранить глобальные данные во временной таблице или, если они постоянны, создавать хранимый процесс. вытащить их во время выполнения.

2 голосов
/ 09 марта 2011

С опозданием, но если вы используете SSMS, вы можете перевести его в SQLCMD Mode и определить переменные таким образом.Вы не можете изменить переменные, как только вы их определили, но все равно это удобно знать.

:setvar MyVariable "FooBar"

Select Foo from Bar where FooBar = '$(FooBar)'
GO
Insert Into Bar(FooBar) Values ('$(FooBar)')
GO
0 голосов
/ 09 июля 2015

Была похожая проблема.

Мое решение:

IF OBJECT_ID('tempdb..#range') IS NOT NULL DROP TABLE #range
GO

SELECT  '06/01/15' STARTING_DATE, '06/30/15' ENDING_DATE
INTO    #range
GO

SELECT  f.*
FROM    foo f
INNER JOIN #range r ON f.date_field BETWEEN r.starting_date AND r.ending_date
GO

SELECT  b.*
FROM    bar b
INNER JOIN #range r ON b.date_field BETWEEN r.starting_date AND r.ending_date
GO

IF OBJECT_ID('tempdb..#range') IS NOT NULL DROP TABLE #range
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...