Curseur pl sql

infsql -  
infsql Messages postés 1 Statut Membre -
bonjour,
svp si qqn peut m'aider:

EMP(ENO,ENAME,SALAIRE,DATE_EMB)

on doit Afficher le nième et le nième + 1 plus anciens embauchés de la table EMP.
n est transmis en paramètre la sol que j'ai fait n'est correcte si qqn peut et merci d'avance.
ACCEPT s_num prompt'donnez le num DE AN'
declare
cursor c_empl is select ename from empl order by date_emb desc;
v_nom empl.ename%type;
i number :=0;
v_nsuiv number;
begin

open c_empl;
while c_empl%found loop

fetch c_empl into v_nom;
if(i:=&s_num)
dbms_output.put_line('le nom du '||&s_num ||'eme est:'||v_nom);
v_nsuiv:=i+1;
end if
if(i:=v_nsuiv)
dbms_output.put_line('le nom du '||&s_num ||'eme est:'||v_nom);
end if
i:=i+1;
exit when c_empl%notfound;
end loop;

end;
/

merci.

1 réponse

infsql Messages postés 1 Statut Membre
 
bonjour,

voici la réponse :

SET SEVEROUTPUT ON

ACCEPT s_num prompt'donnez le num DE n : '
declare
cursor c_empl is select ename from empl order by date_emb asc;
v_nom empl.ename%type;
v_nsuiv number;
n number;
p number;
begin
select count(*) into n from empl;
open c_empl;
p:=&n_num;
for i in 1..n loop
fetch c_empl into v_nom;
if(i=p) then
DBMS_OUTPUT.put_line('le nom : '||v_nom);
v_nsuiv:=i+1;
end if;
if(i=v_nsuiv) then
DBMS_OUTPUT.put_line('le nom n+1 est:'||v_nom);
end if;
end loop;
end;
0