Bonjour,
lorsque j'exécute le code suivant, j'ai l'erreur
Or, si l'enlève le code lg 30..36, ça fonctionne.Error at line 3
ORA-00933: la commande SQL ne se termine pas correctement
ORA-06512: à ligne 28
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;
Partager