2017-03-08 2 views
0

Comment afficher une variable dans For Loop?Comment afficher une variable dans une boucle dans PL/SQL SQL Developer

Ex

set serveroutput on; 

BEGIN 
    DBMS_OUTPUT.put_line('Starting'); 

    FOR r IN (SELECT owner, table_name FROM all_tables WHERE owner in ('ABC','CDE')) 
    loop 
     DBMS_OUTPUT.put_line('owner'); 
     EXECUTE IMMEDIATE 'grant select on '||r.owner||'.'||r.table_name||' to XXXX'; 
    end loop; 

    DBMS_OUTPUT.put_line('Ending'); 
END; 

Je reçois ci-dessous les sorties imprimées

PL/SQL procedure successfully completed. 

Starting 
Ending 

L'une dans la boucle n'est pas imprimé

Tout changement à faire ici?

+0

il se pourrait que l'instruction select ne renvoie aucune valeur, quelle est la résultats de la requête? – TheName

+0

#CuriousProgrammer s'il vous plaît corriger votre réponse en supprimant le devis il doit être DBMS_OUTPUT.put_line (R.owner); mais si cela n'imprime rien du tout cela signifie que l'instruction select ne renvoie aucune ligne, quel est le résultat de la requête? – TheName

+0

DBMS_OUTPUT.put_line ('R.owner'); DBMS_OUTPUT.put_line (R.owner); Les deux ne fonctionne pas J'ai besoin de voir si iterating par les deux propriétaires – CuriousProgrammer

Répondre

0

si cela échoue, cela signifie que ce SELECT owner, table_name FROM all_tables WHERE owner in ('ABC','CDE') ne retourne rien et c'est pourquoi sa va pas dans la déclaration de la boucle

set serveroutput on; 
    BEGIN 
     DBMS_OUTPUT.put_line('Starting'); 
     FOR R IN (SELECT owner, table_name FROM all_tables WHERE owner in ('ABC','CDE')) 
     loop 
     DBMS_OUTPUT.put_line(r.owner); 
    EXECUTE IMMEDIATE 'grant select on '||R.owner||'.'||R.table_name||' to XXXX'; 
     end loop; 
     DBMS_OUTPUT.put_line('Ending'); 
    END; 
+0

Il existe TheName.Si je lance la requête autonome, il récupère résultat – CuriousProgrammer