------------------------------------------------------------------------------- -- corr_pl_bases.sql -- tourne le 26 janvier 2017 sur le corrige du TD2 ------------------------------------------------------------------------------- -- traitement 3. -- on adapte le modele d'ordre a la syntaxe PL/SQL : create or replace function traitement3( le_jour sejour.jour%type) return integer is le_nombre integer; begin select count(*) into le_nombre from sejour where jour < le_jour; delete sejour where jour < le_jour; return le_nombre; end; / -- tester : set serveroutput on -- deux select suivants inutiles dans cet exercice mais visualise la base : select * from client; select * from village; select * from sejour; exec dbms_output.put_line(traitement3(364)); select * from sejour; exec dbms_output.put_line(traitement3(365)); select * from sejour; ------------------------------------------------------------------------------- -- traitement 3 par procedure avec variables out : -- on adapte la version ci-dessus par fonction : create or replace procedure traitement3_out( le_jour sejour.jour%type, le_nombre out integer) is begin select count(*) into le_nombre from sejour where jour < le_jour; delete sejour where jour < le_jour; end; / select * from sejour; declare n int; begin traitement3_out(364, n); dbms_output.put_line('Nombre de sejours detruits : '||n); end; / select * from sejour; declare n int; begin traitement3_out(365, n); dbms_output.put_line('Nombre de sejours detruits : '||n); end; / select * from sejour; ------------------------------------------------------------------------------- -- traitement 1 : create or replace function traitement1( le_nom client.nom%type, l_age client.age%type) return client.idc%type is l_idc client.idc%type; begin l_idc := seq_client.nextval; insert into client(idc, nom, age) values(l_idc, le_nom, l_age); return l_idc; end; / select * from client; exec dbms_output.put_line('nouvel identifiant : '||traitement1('Jeanne', 23)); select * from client; exec dbms_output.put_line('nouvel identifiant : '||traitement1('Jules', 23)); select * from client; ------------------------------------------------------------------------------- -- traitement 4 : non fourni mais il n'y a pas de piege -------------------------------------------------------------------------------