J'ai une procédure stockée dans laquelle j'essaie d'utiliser les éléments à l'intérieur de tab_array, afin de faire une instruction select. Celui-ci est un curseur à l'intérieur d'une boucle. Je veux utiliser chaque élément de l'arrat comme "table". La procédure devrait fonctionner dinamically.en utilisant le curseur dans la boucle de tableau
Quelqu'un peut-il me contacter? J'espère que le problème est clair. Merci.
create or replace PROCEDURE PROVA AS
myRiga number;
myDescRiga varchar2(1000);
myCircuito varchar2(1000);
myPrevRiga number;
myPrevCircuito varchar2(1000);
myCodeTipoRiga varchar2(1000);
myPrevCodeTipoRiga varchar2(1000);
type tab_array is array(5) of varchar2(1000);
tab tab_array;
tabella varchar2(100);
BEGIN
tab := tab_array ('TAB1', 'TAB2', 'TAB3', 'TAB4', 'TAB5');
for i in 1..tab.count loop
tabella:=tab(i);
declare cursor prova is
SELECT CODE_TIPO_RIGA,ATTR_PROG_RIGA, ATTR_DESC_RIGA_01 FROM ||tabella|| ORDER BY ATTR_PROG_RIGA ;
begin
for item in prova loop
myRiga:=item.attr_prog_riga;
myCircuito:=item.attr_desc_riga_01;
myCodeTipoRiga:=item.code_tipo_riga;
dbms_output.put_line('---INIZIO---');
dbms_output.put_line('myRiga: ' || myRiga);
dbms_output.put_line('myCircuito: ' || myCircuito);
dbms_output.put_line('myCodeTipoRiga: ' || myCodeTipoRiga);
dbms_output.put_line('myPrevRiga: ' || myPrevRiga);
dbms_output.put_line('myPrevCircuito: ' || myPrevCircuito);
dbms_output.put_line('myPrevCodeTipoRiga: ' || myPrevCodeTipoRiga);
if (myRiga!=myPrevRiga and myCircuito=myPrevCircuito and myPrevCodeTipoRiga=myCodeTipoRiga) then
if myRiga > myPrevRiga then
dbms_output.put_line('riga:'|| myRiga);
update ||tabella|| set attr_desc_riga_01 = ' ' where ATTR_PROG_RIGA in (myRiga);
end if;
end if;
myPrevRiga:=myRiga;
myPrevCircuito:=myCircuito;
myPrevCodeTipoRiga:=myCodeTipoRiga;
dbms_output.put_line('---FINE---');
end loop;
end;
end loop;
END PROVA;
prendre en EXECUTE IMMEDIATE la mise à jour et la déclaration du curseur – Thomas
Remerciez toi! Je vais essayer de cette façon –