2017-10-12 4 views
0

Ma procédure que j'appelle fonctionne jour après jour. J'ai besoin de passer/itérer d'un jour jusqu'à la date actuelle à la procédure pour qu'il effectue l'action. Peut-on aider avec ça. Voici l'exemple que j'ai essayé mais il ne fonctionne pas. Je suis débutant.SQL SERVER - Besoin d'un programme T-SQL simple pour itérer la date

USE [aaa] 
GO 

DECLARE @return_value int 
DECLARE @VarDate1 Datetime ='2015-09-30' 
DECLARE @VarDate2 Datetime ='2015-09-30' 


WHILE (@VarDate2 <= '2015-12-10') 
BEGIN 
EXEC @return_value = [dbo].[procname] 
     @tday1 = @VarDate1 , 
     @tday2 = @VarDate2 

SET @VarDate2 = DATEADD(DAY, 1, @VarDate2) 
set @VarDate1 = @VarDate2 

SELECT 'Return Value' = @return_value 
END 
GO 
+2

Définir 'échoue au travail'. Avez-vous une erreur? Est-ce qu'il boucle maintenant? Aussi, pourquoi avez-vous 2 variables qui sont identiques, toujours? –

+0

PLSQL et SQL SERVER ne sont pas identiques. s'il vous plaît supprimer les balises plsql. –

+0

@ WEI_DBA Je ne reçois aucune erreur, le processus ne se termine pas. La procédure a besoin de commencer la date et la date de fin de sorte qu'ils soient identiques. – mux

Répondre

-1

En vérifiant votre code, vous obtenez probablement une erreur en essayant de définir la valeur de @ @ VarDate1 et VarDate2. Essayez le code ci-dessous:

DECLARE @return_value int 
DECLARE @VarDate1 Datetime = CAST('20150930 00:00:00' AS DATETIME) 
DECLARE @VarDate2 Datetime = CAST('20150930 00:00:00' AS DATETIME) 


WHILE (@VarDate2 <= '20151210') BEGIN 

    SET @VarDate2 = DATEADD(DAY, 1, @VarDate2) 
    SET @VarDate1 = @VarDate2 

    PRINT @VarDate2 --Change your logic here 
END 
GO