Bonjour,

lorsque j'exécute le code suivant, j'ai l'erreur
Error at line 3
ORA-00933: la commande SQL ne se termine pas correctement
ORA-06512: à ligne 28
Or, si l'enlève le code lg 30..36, ça fonctionne.
Si je prends le résultat affiché (le select...) ça fonctionne
Si je mets en dur dans la variable v_select un des résultats obtenus, ça fonctionne.

Je suis à court d'idées.

Une aide ?

Merci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
declare
   TYPE cv_typ IS REF CURSOR;
   cv cv_typ;
   cv_record varchar2(10000);
   v_select varchar2(10000);
    CURSOR c_lst_tab_usitee IS
        SELECT table_name
        FROM sys.dba_tab_modifications 
        WHERE inserts+deletes+updates > 0 AND table_owner = 'POWERCARD';
    cursor c_lst_colPAN_tab(v_tab_usitee varchar2) is
        select column_name 
        FROM DBA_TAB_COLUMNS 
        WHERE TABLE_NAME = v_tab_usitee AND data_type='VARCHAR2' AND data_length>15;
 
BEGIN
--    DBMS_OUTPUT.ENABLE( 1000000 ) ;
    for r_lst_tab_usitee in c_lst_tab_usitee
    loop
        DBMS_OUTPUT.PUT_LINE  ('*' || r_lst_tab_usitee.table_name);
        v_select := 'select ''a'' ';
        for r_lst_colPAN_tab in c_lst_colPAN_tab(r_lst_tab_usitee.table_name)
        loop
            v_select := v_select || ' || ''@'' || ' || r_lst_colPAN_tab.column_name;
            --DBMS_OUTPUT.PUT_LINE ('-----' || r_lst_colPAN_tab.column_name);
        end loop;
        v_select := v_select || ' from ' || r_lst_tab_usitee.table_name;
        DBMS_OUTPUT.PUT_LINE (v_select);
        OPEN cv FOR v_select ;     -- :cry:c'est ici que le problème se pose
        loop
            fetch cv into cv_record;
            exit when cv%NOTFOUND;
            DBMS_OUTPUT.PUT_LINE (cv_record);
        end loop;
        close cv;
    end loop;
end;