0
我有一个存储过程,我尝试使用tab_array中的项目,以便执行select语句。这是一个循环内的游标。我想用这个arrat的每个项目作为“表格”。这个程序应该可以工作。在数组循环中使用游标
任何人都可以帮我吗?我希望问题清楚。 谢谢。
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;
考虑到EXECUTE立即更新和游标声明 – Thomas
谢谢您!我会试试这个方式 –