2010-04-22 8 views
4

내 TSQL 쿼리에서 변수를 사용하고 있습니다. 내 스크립트가 커짐에 따라 각 부분을 GO으로 구분했습니다. 이제는 스크립트 상단에있는 변수에 액세스해야합니다.TSQL : 전역 스크립트 변수?

어떻게 이러한 변수에 계속 액세스 할 수 있습니까?

바라건대, 이것은 간단하고 간단합니다. 모든

답변

8

GO는 t-SQL 별도 배치로 사용

덕분에, 로컬 변수 범위가 그들이 정의 된 배치 또는 절차 내에서만 볼 수있다.

임시 테이블에 전역 항목을 저장하는 것이 가장 좋으며, 상수 인 경우 저장된 proc 파일을 만드는 것이 가장 좋습니다. 런타임에 가져 오기.

2

조금 늦었지만 SSMS를 사용하는 경우 SQLCMD Mode에 넣고 그런 식으로 변수를 정의 할 수 있습니다. 변수를 정의한 후에는 변수를 변경할 수 없지만 알아두면 편리합니다.

:setvar MyVariable "FooBar" 

Select Foo from Bar where FooBar = '$(FooBar)' 
GO 
Insert Into Bar(FooBar) Values ('$(FooBar)') 
GO 
0

비슷한 문제가있었습니다.

내 솔루션 :

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