2010-04-22 5 views
4

J'utilise des variables dans mes requêtes TSQL. Comme mon script a grandi, j'ai séparé chaque partie par GO, maintenant le problème est que j'ai besoin d'accéder aux variables en haut de mon script.TSQL: variable globale de script?

Comment puis-je toujours accéder à ces variables?

Heureusement, c'est quelque chose de simple et direct.

Merci à tous

Répondre

8

GO est utilisé pour lot séparé de t-sql, variables ont une portée locale et ne sont visibles dans le lot ou d'une procédure où ils sont définis. De votre mieux est probablement de stocker le contenu global dans une table temporaire, ou si elles sont constantes créer un proc stocké. pour les tirer à l'exécution.

2

Bit en retard, mais si vous utilisez SSMS, vous pouvez le mettre en SQLCMD Mode et définir des variables de cette façon. Vous ne pouvez pas changer les variables une fois que vous les avez définies, mais c'est toujours pratique à savoir.

:setvar MyVariable "FooBar" 

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

Problème similaire.

Ma solution:

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