03 noiembrie 2011

Exceptii in PL/SQL

drop table stud;
create table stud (
matricol number(4) primary key,
nume varchar2(30) unique not null,
grupa varchar2(5),
medie number(10,2) check (medie>1 AND medie<=10),
bursa number(3)
);

insert into stud values (1, 'elena', '333CA', 8.7, 0);
insert into stud values (2, 'geanina', '331CA', 5.7, 0);
insert into stud values (3, 'simona', '332CA', 8.2, 0);
insert into stud values (4, 'cornel', '335CA', 9.5, 0);
insert into stud values (5, 'mihai', '334CA', 10, 0);


----------------------------------------------------------
Exceptie cand numele inserat nu este unic:
----------------------------------------------------------

set serveroutput on;

declare
smat number(4);
snume varchar2(30);
sgrupa varchar2(5);
smedie number(10,2);
sbursa number(3);
begin
smat := &matricol;
snume := &nume;
sgrupa := &grupa;
smedie := &medie;
sbursa := &bursa;

insert into stud values (smat, snume, sgrupa, smedie, sbursa);
dbms_output.put_line('inserat cu succes');
exception
when DUP_VAL_ON_INDEX then
dbms_output.put_line(' Nu s-a putut insera: numele nu este unic');
end;
/


-------------------------------------------------------
Exceptie cand bursa nenula pt student cu media<6
-------------------------------------------------------

set serveroutput on;

declare
smat number(4);
snume varchar2(30);
sgrupa varchar2(5);
smedie number(10,2);
sbursa number(3);
bursa_not_allowed exception;
begin
smat := &matricol;
snume := &nume;
sgrupa := &grupa;
smedie := &medie;
sbursa := &bursa;

if smedie<6 AND sbursa>0 then
raise bursa_not_allowed;
end if;
insert into stud values (smat, snume, sgrupa, smedie, sbursa);
dbms_output.put_line('inserat cu succes');

exception
when bursa_not_allowed then
dbms_output.put_line(' Nu s-a putut insera: bursa nenula pt student cu media sub 6');
end;
/


---------------------------------------------------------------
Idem primul exemplu - dar altfel
---------------------------------------------------------------

set serveroutput on;

declare
smat number(4);
snume varchar2(30);
sgrupa varchar2(5);
smedie number(10,2);
sbursa number(3);
default_name varchar2(30);
null_exc exception;
pragma exception_init (null_exc, -1400);
begin
smat := 17;
snume := null;
sgrupa := '321cc';
smedie := 8;
sbursa := 0;
default_name := 'default4';

insert into stud values (smat, snume, sgrupa, smedie, sbursa);
dbms_output.put_line('inserat cu succes');

exception
when null_exc then
dbms_output.put_line('Eroare: numele trebuie sa fie nenul!');
insert into stud values (smat, default_name, sgrupa, smedie, sbursa);
dbms_output.put_line('Am inserat: ' || smat || ' ' || default_name || ' ' || sgrupa || ' ' || smedie || ' ' || sbursa);
end;
/

Niciun comentariu: