Как получить доступ к переменным во всем сценарии SQL - PullRequest
1 голос
/ 30 марта 2012

Мне нужен доступ к переменным во всем скрипте, который разделен на несколько разделов командой GO.Как это сделать?

Ниже приведен исходный пример (это не работает):

--script info (begining of script file)  
DECLARE @ScriptCode NVARCHAR (20)  = '20120330-01'  

--some queries  
GO  

--and there I cannot use @ScriptCode variable 
INSERT INTO DBScriptsHistory(ScriptCode) VALUES(@ScriptCode)  

Ответы [ 3 ]

2 голосов
/ 30 марта 2012

Оператор GO является пакетным разделителем для различных инструментов клиента SQL - он не является частью SQL.

Каждая партия отделена от другой - просто удалите оператор GO.

См. GO (Tranasct-SQL) :

Область действия локальных (определяемых пользователем) переменных ограничена пакетом и на них нельзя ссылаться после команды GO.

2 голосов
/ 30 марта 2012

Это верно, потому что переменные существуют только в текущем пакете. Предполагая, что вам нужно использовать оператор GO (например, CREATE VIEW должен быть первым оператором в пакете), простейшим решением, вероятно, является использование переменных сценариев sqlcmd .

1 голос
/ 30 марта 2012

Удалите ключевое слово GO, оно будет работать.Как только вы вызвали GO, переменная больше не находится в области видимости.

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