[T-SQL] Boucle WHILE / PRINT

elsadelatoundra Messages postés 126 Statut Membre -  
 joujou -
Bonjour,

Je débute en TSQL et je n'arrive pas trop à faire marcher ma boucle while et surtout le print !!

Je fais un print dans une boucle while pour voir si je rentre dedans ...

Voici mon code :
ALTER PROCEDURE dbo.maProcedure
    @i integer,
	@nbEnregistrements integer
	
AS

BEGIN TRANSACTION /*procedure*/

    declare     /*Variables destinées aux traitements*/
    /* A */ @a nvarchar(255),
	/* B */ @b float,

            
    BEGIN /*traitement*/
	/*Initialisation des variables utilisées dans la procédure*/
	
	SET @i = 0
	
	SELECT @nbEnregistrements = (
		SELECT COUNT(*)
		FROM dbo.PC
		WHERE (Argument = 0)
		)

	
		WHILE (@i < @nbEnregistrements)
			BEGIN /*While*/
			PRINT 'On est dans le WHILE';
			END /*While*/
	END /*traitement*/

COMMIT TRANSACTION /* procedure */


Quand j'exécute ma procédure, SQL Server me dit "Command(s) completed successfully." mais ne m'imprime rien :-S

J'espère que l'un d'entre vous saura me dire ce qui ne va pas (à part moi !) !!

Je vous remercie d'avance ...

--

ellessa mange des cerises

4 réponses

  1. Fouad
     
    Bonjour,

    Il manque une incrementation dans "WHILE", SET @i = @i +1

    Fouad
    2
  2. SebManfred Messages postés 484 Date d'inscription   Statut Membre Dernière intervention   128
     
    tu initialise i à 0 et ensuite tu teste si i<nbenregistrement
    mais si nbenregistrement=0, tu n'es pas dans ce cas : tu as une inégalité stricte...
    tu as essayé d'afficher le nombre d'enregistrements, pour voir? ça ne m'étonnerait pas qu'il soit égal à 0.
    0
  3. joujou
     
    BONJOUR

    La syntaxe du while est la suivante :

    while condition, instruction_1, ... ,instruction_N , end

    ou encore (dans un script ou une fonction) :

    while condition
    instruction_1
    .............
    instruction_N
    end

    où chaque instruction_k peut être suivie d'un point virgule et ce qui est appelé condition est en fait une expression délivrant un scalaire booléen.
    0