내 TSQL 쿼리에서 변수를 사용하고 있습니다. 내 스크립트가 커짐에 따라 각 부분을 GO
으로 구분했습니다. 이제는 스크립트 상단에있는 변수에 액세스해야합니다.TSQL : 전역 스크립트 변수?
어떻게 이러한 변수에 계속 액세스 할 수 있습니까?
바라건대, 이것은 간단하고 간단합니다. 모든
내 TSQL 쿼리에서 변수를 사용하고 있습니다. 내 스크립트가 커짐에 따라 각 부분을 GO
으로 구분했습니다. 이제는 스크립트 상단에있는 변수에 액세스해야합니다.TSQL : 전역 스크립트 변수?
어떻게 이러한 변수에 계속 액세스 할 수 있습니까?
바라건대, 이것은 간단하고 간단합니다. 모든
GO는 t-SQL 별도 배치로 사용
덕분에, 로컬 변수 범위가 그들이 정의 된 배치 또는 절차 내에서만 볼 수있다.
임시 테이블에 전역 항목을 저장하는 것이 가장 좋으며, 상수 인 경우 저장된 proc 파일을 만드는 것이 가장 좋습니다. 런타임에 가져 오기.
조금 늦었지만 SSMS를 사용하는 경우 SQLCMD Mode에 넣고 그런 식으로 변수를 정의 할 수 있습니다. 변수를 정의한 후에는 변수를 변경할 수 없지만 알아두면 편리합니다.
:setvar MyVariable "FooBar"
Select Foo from Bar where FooBar = '$(FooBar)'
GO
Insert Into Bar(FooBar) Values ('$(FooBar)')
GO
비슷한 문제가있었습니다.
내 솔루션 :
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