1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| create or replace procedure Eliminer_sf(f in number) as
V_idcur integer;
v_selectcmd varchar2(100);
v_ndf f.ndf%type;
v_ag f.ag%type;
v_ad f.ad%type;
s number;
begin
--ouverture du cursseur
v_idcur :=DBMS_SQL.OPEN_CURSOR;
--construction de la requéte
V_selectcmd := 'select v_ndf, v_ag, v_ad from f';
--compilation de la requéte
DBMS_SQL.PARSE(V_Idcur, V_selectcmd, DBMS_SQL.V7);
--établissement du lien
DBMS_SQL.BIND_VARIABLE(V_idcur, ':b_f', f);
DBMS_SQL.DEFINE_COLUMN(v_idcur, 1, v_ndf);
DBMS_SQL.DEFINE_COLUMN(v_idcur, 2, v_ag);
DBMS_SQL.DEFINE_COLUMN(v_idcur, 3, v_ad);
--exécution de la requéte
s:=DBMS_SQL.EXECUTE(v_idcur);
--boucle de lecture des lignes du cursseur
LOOP
if (DBMS_SQL.fetch_rows(v_idcur)=0 then
EXIT;
end if;
--affectation des valeurs dans les variables
DBMS_SQL.COLUMN_VALUE(v_idcur , 1, v_ndf);
DBMS_SQL.COLUMN_VALUE(v_idcur , 2, v_ag);
DBMS_SQL.COLUMN_VALUE(v_idcur , 3, v_ad);
--insertion dans la table temporaire
insert into table_temp(col1)
values (v_ndf||' '||v_ag||' '||v_ad);
end LOOP
--fermeture du curseur
DBMS_SQL.CLOSE_cursor(v_idcur);
commit;
EXCEPTION
when others then
DBMS_SQL.CLOSE_cursor(v_idcur);
Raise;
end; |
Partager