Bonsoir tout le monde,
je suis débutante en sql et j'ai un projet a faire en sql dynamique j'ai pas su résoudre le probléme : on veut écrire une procédure qui élimine les attributs superflus dans une dépendance fonctionnelle
voila ce que j'ai fait mais je pense que ce n'est pas correct

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
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;