2009-07-22 10 views
0

dans plsql, j'ai vu quelqu'un utiliser pour la boucle sans définir l'index de la boucle, et la base de données peut s'exécuter correctement. mais je ne trouve pas la description de cette syntaxe dans la documentation Oracle. quelqu'un peut-il l'expliquer? grand merci!en PLSQL, j'ai vu quelqu'un utiliser pour boucle sans définir l'indice de boucle, pourquoi? Comment?

le code suivant est un exemple, notez la inner_c ne sont pas définis:

declare 
    v_current_nr NUMBER; 
begin 
    v_current_nr:=0; 

    loop 
     for inner_c in 1..4 
     loop 
      DBMS_OUTPUT.put_line(v_current_nr); 
     end loop; 

     v_current_nr:=v_current_nr+5; 
     exit when v_current_nr>25; 
    end loop; 
end; 
+0

Vous avez demandé docs: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/controlstructures.htm#sthref945 –

+0

spécifications techniques complémentaires: http: // Télécharger .oracle.com/docs/cd/B19306_01/appdev.102/b14261/loop_statement.htm # i34785 –

Répondre

3

inner_c est utilisé en tant que poignée/variable pour la boucle. Si vous DBMS_OUTPUTed, vous verriez qu'il a bouclé les numéros 1 - 4 dans ce cas.

Il est implicitement déclaré comme faisant partie du mécanisme de boucle. Il tombera hors de la portée lorsque la boucle est terminée.

0

Que voulez-vous dire par "l'indice de boucle"?

Vous pouvez: For i in 1..5 que je donne les valeurs de 1 à 5

Mais vous pouvez aussi:

For record in myCursor Loop 
    record.myField 
End Loop 

qui renverra chaque fois qu'une ligne du curseur. Peut-être pouvez-vous donner un exemple de ce que vous avez vu?

http://www.techonthenet.com/oracle/loops/for_loop.php