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