0% found this document useful (0 votes)
6 views6 pages

LP3PLSQL

Uploaded by

xerces
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views6 pages

LP3PLSQL

Uploaded by

xerces
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
You are on page 1/ 6

LP3 PLSQL

--LP3
--Ex1
CREATE TYPE OBJ_ADRESA AS OBJECT(
STRADA VARCHAR2(50),
NUMAR VARCHAR2(3),
COD_POSTAL VARCHAR2(6),
ORAS VARCHAR2(10),
ID_TARA CHAR(2),
MEMBER FUNCTION ADRESA_COMPLETA RETURN VARCHAR2 );

--Ex 2

SET SERVEROUTPUT ON

DECLARE
variabila OBJ_ADRESA;
BEGIN
variabila := OBJ_ADRESA('Eremia Grigorescu', '19','100', 'Ploiesti','01');
DBMS_OUTPUT.PUT_LINE(variabila.strada || ' ' || variabila.numar);
END;

-- Ex 3

ALTER TYPE OBJ_ADRESA ADD CONSTRUCTOR FUNCTION OBJ_ADRESA(


P_STRADA VARCHAR2,
P_ORAS VARCHAR2,
P_NUMAR VARCHAR2,
P_COD_POSTAL VARCHAR2)
RETURN SELF AS RESULT;

create or replace type body obj_adresa


is
member function adresa_completa return varchar2 is
begin
return strada || ' ' || numar || ' ' || oras || ' ' || cod_postal || ' ' || id_tara;
end;
constructor function obj_adresa(
p_strada varchar2,
p_oras varchar2,
p_numar varchar2,
p_cod_postal varchar2)
return self as
result is
begin
self.STRADA := p_strada;
self.ORAS := p_oras;
self.NUMAR := p_numar;
self.COD := p_cod_postal;
self.COD_POSTAL := p_cod_postal;
self.ID_TARA := 'RO';
return;
end;
end ;

--ex urmator

declare
v_adresa obj_adresa;
v_adresa_2 obj_adresa;
begin
v_adresa := obj_adresa(
'Str. Lunga',
'Brasov',
'10',
'012531'
);

v_adresa_2 := obj_adresa(
'Bd. Unirii',
'Bucuresti',
'10',
'012531'
);

dbms_output.put_line(v_adresa.adresa_completa());
dbms_output.put_line(v_adresa_2.adresa_completa());

end;
/

ultimul exercitiu

CREATE OR REPLACE TYPE obj_utilizator AS OBJECT (


id_user VARCHAR2(2),
cnp VARCHAR2(13),
nume varchar2(10),
email varchar2(10),
date_login obj_autentificare,
adresa obj_adresa,

MEMBER FUNCTION get_sex RETURN VARCHAR2,


STATIC FUNCTION nr_utilizat RETURN NUMBER
)
NOT FINAL;

—urmatorul
CREATE TABLE UTILIZATOR OF obj_utilizator;

INSERT INTO UTILIZATOR VALUES


('1','2990','Georgerscu','[email protected]',obj_autentificare('georgescu','asd'),
obj_adresa( 'Str. Lunga',
'Brasov',
'10',
'012531'))

-- sa se afiseze numele utilizatorilor, username si orasul in care


locuiesc
select nume, u.date_login.username,u.adresa.oras from utilizator u;

——

implementarea metodelor

create or replace type body obj_utilizator is


member function get_sex return varchar2 is
pr_caracter varchar2(1);
begin
pr_caracter:=substr(cnp,1,1);
if pr_caracter in('1','5') then
return 'masculin';
else
return 'feminin';
end if;
end;
STATIC FUNCTION nr_utilizat RETURN NUMBER is
nr_inregistrari number(1);
begin
select count(*) into nr_inregistrari from utilizator;
return nr_inregistrari;

end;
end;

——

Apel metode

Sa se afiseze numele utilizatorilor, cnp ul si genul.


Sa se afiseze numarul de utilizatori.

-- sa se afiseze numele utilizatorilor, cnp-ul si genul


select nume, cnp, u.get_sex()
from utilizator u;

-- sa se afiseze nr de utilizatori
select obj_utilizator.nr_utilizat()
from dual;

declare
begin
dbms_output.put_line(obj_utilizator.nr_utilizat());
end;
/

cream obiectul instructor

CREATE OR REPLACE TYPE obj_utilizator AS OBJECT (


CREATE OR REPLACE TYPE obj_instructor UNDER obj_utilizator (
grad_didactic varchar2(20),
static function nr_utilizat return number
);

create table instructor of obj_instructor

insert into instructor


values('2','102567','Mircea','[email protected]',obj_autentificare('mircea','grad'),obj_adresa(
'Bd. Unirii',
'Bucuresti',
'10',
'012531'
),'profesor');
insert into instructor
values('3','602467','Ioana','[email protected]',obj_autentificare('ioana','0000'),obj_adresa(
'Bd. Unirii',
'Brasov',
'10',
'012531'
),'profesor');
insert into instructor
values('4','502467','Andrei','[email protected]',obj_autentificare('ioan
a','0000'),obj_adresa(
'Bd. Unirii',
'Brasov',
'10',
'012531'
),'asistent');

——

create or replace type body obj_instructor as

STATIC FUNCTION NR_UTILIZAT RETURN NUMBER is


nr_inregistrari number(1);
begin
select count(*) into nr_inregistrari from instructor;
return nr_inregistrari;
end;
end;

--sa se afiseze numele cnpul genul orasul gradul didactic al instr


SELECT nume, cnp, I.get_sex(), I.ADRESA.ORAS, I.GRAD_DIDACTIC
FROM INSTRUCTOR I
--sa se afiseze nr de instructori
SELECT obj_instructor.nr_utilizat() from dual

--PENTRU CURSANT
CREATE OR REPLACE TYPE obj_cursant UNDER obj_utilizator(
an varchar2(20),
grupa varchar2(20),
member procedure afis_an_gr
);

——

CREATE TABLE cursant OF obj_cursant;

INSERT INTO cursant VALUES('7','66666','Alex','[email protected]',


obj_autentificare('alex','stud'),
obj_adresa('Str. mihai','44','2314','Sibiu'), 'Anul I','Grupa 1');
INSERT INTO cursant VALUES('8','12314','Mihai','[email protected]',
obj_autentificare('mihai','prof'),
obj_adresa('Str. mihai','44','2314','Sibiu'), 'Anul II','Grupa 2');
INSERT INTO cursant VALUES('9','12314','Mihai','[email protected]',
obj_autentificare('mihai','prof'),
obj_adresa('Str. mihai','44','2314','Sibiu'), 'Anul III','Grupa 3');

——
create or replace type body obj_cursant is
member procedure afis_an_gr is

begin
dbms_output.put_line(an||' '||grupa);
end;
end;

——

declare
cursor c is select * from cursant;
cursant obj_cursant;
begin
for variabila in c loop
cursant := obj_cursant(variabila.id_user, variabila.cnp,
variabila.nume, variabila.email, variabila.date_login,
variabila.adresa, variabila.an, variabila.grupa);
cursant.afis_an_gr;
end loop;

end;

——

You might also like