[PL/SQL] Curseurs Imbriqués visibilité de variables
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:
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:
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 |