# L3BD2 - groupe 3 - TD3 - 09-02-21
#
#
```sql=
-- traitement 3 :
-- exemple sur le jour 100 :
select count(*)
from sejour
where jour<100;
delete sejour where jour<100;
1. procédure traitement3:
create or replace function traitement3( le_j sejour.jour%type)
return integer
is
l_nb integer;
begin
select count(*)
into l_nb
from sejour
where jour < le_j;
delete sejour
where jour < le_j;
return l_nb;
end;
/
/*appel fonction traitement3 */
set server output on
exec dbms_output.put_line(traitement3(1));
2. procédure traitement3 comme procédure et non une fonction:
create or replace procedure traitement3_bis(le_j sejour.jour%type, lo_nb out integer)
is
begin
select count(*)
into lo_nb
from sejour
where jour < le_j;
delete sejour
where jour < le_j;
end;
/
/* appel de la procédure traitement3_bis */
declare
n integer;
begin
traitement3_bis(1, n);
dbms_output.put_line(n);
end;
/
3. traitement1
/* modele d'ordre :
traitement1(le_nom, le_age) :
l_idc := seq_client.nextval; -- rem : variante par rapport a action 1
insert into client(idc, nom, age)
values(l_idc, le_nom, le_age);
retour traitement1 : l_idc;*/
create or replace function traitement1(le_nom client.nom%type, le_age client.age%type)
return client.idc%type
is
l_idc client.idc%type;
begin
l_idc := seq_nextval;
insert into client(idc, nom, age) values (l_idc,le_nom,le_age);
return l_idc;
end;
/
/* même appel que pour la question 1. */
4. traitement4
/* modele d'ordre :
traitement 4(l_ids, l_idc, l_idv, le_jour)) :
-- ligne detruite supposee en parametre a ce stade du cours
select avoir
from client
where idc = l_idc
renvoie resultat dans : l_avoir
insert into archive values(l_ids, l_idc, l_idv, le_jour, l_avoir);
*/
create or replace procedure traitement4(
le_sejour sejour%rowtype)
is
l_avoir client.avoir%type;
begin
select avoir
into l_avoir
from client
where idc = le_sejour.idc;
insert into archive values(
le_sejour.ids,
le_sejour.idc,
le_sejour.idv,
le_sejour.jour,
l_avoir);
end;
/
```