Bonjour,
Je dois effectuer un traitement sur des colones varchar2 de tables ayant un nom générique du style XXXXX_%
Pour se faire j'ai un premier curseur qui va me chercher le nom des ces tables et de leurs colones dans une table systeme
et un deuxième curseur qui va me chercher les infos dans les tables.
J'ai des erreurs à la compil que vous pouvez voir ci dessous, je n'arrive pas à linker mais deux curseurs.
Si vous avez une solution je suis prenneur.
Une solution que j'ai trouvé est de remplacer mon sous curseur par un execute immediate mais je ne sais
pas ensuite comment boucler sur le résultat de cet execute immédiate.
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 declare cursor tableName is select distinct TABLE_NAME, COLUMN_NAME, DATA_LENGTH from DBA_TAB_COLUMNS where TABLE_NAME like 'XXXXX_%' and DATA_TYPE = 'VARCHAR2' order by TABLE_NAME; cursor tableData (tabName in varchar2, colName in varchar2, dataLength in number) is select colName from tabName where length(colName) = tableName.dataLength; begin for tabs in tableName loop for datas in tableData(tabs.TABLE_NAME,tabs.COLUMN_NAME,tabs.DATA_LENGTH) loop dbms_output.put_line(datas.colName); end loop; end loop; end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ORA-06550: line 10, column 29: PLS-00201: identifier 'TABNAME' must be declared ORA-06550: line 10, column 9: PL/SQL: SQL Statement ignored ORA-06550: line 19, column 26: PLS-00364: loop index variable 'DATAS' use is invalid ORA-06550: line 19, column 5: PL/SQL: Statement ignored
Partager