---
# System prepended metadata

title: L3BD2 - groupe 3 - TD3 - 09-02-21

---

# 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;
/
    
    
``` 