Sei sulla pagina 1di 26

-------------------------------------------

-- Crearea tabelelor din baza de date


-------------------------------------------
drop database if exists Hospital;
CREATE DATABASE IF NOT EXISTS Hospital;
use Hospital;

CREATE TABLE IF NOT EXISTS Sectie


( id int not null unique primary key,
Nume varchar(40) not null,
Nr_paturi int not null,
Sef_sectie varchar(45)
);

CREATE TABLE IF NOT EXISTS Registru


( id int not null,
NrReg int not null,
NrCrt int not null,
PRIMARY KEY (id, NrCrt),
Parafa int not null

);

CREATE TABLE IF NOT EXISTS Pacient


( id int not null unique ,
CNP varchar(13) not null unique,
PRIMARY KEY(id, CNP),
Nume varchar(45) not null,
Data_n DATE not null,
Profesie varchar(45) not null,
Adresa varchar(45) not null,
Telefon varchar(10) not null,
Grup_sangvin varchar(4) not null,
Asigurat boolean,
Provenienta enum('rural','urban'),
Categorie enum('Adult','Copil'),
Sex enum('M', 'F')

);

CREATE TABLE IF NOT EXISTS Introducere


( id int not null auto_increment PRIMARY KEY,
CNP varchar(13) not null,
FOREIGN KEY(CNP) REFERENCES Pacient(CNP),
idReg int not null,
FOREIGN KEY(idReg) REFERENCES Registru(id)
);

CREATE TABLE IF NOT EXISTS Consult


( NrCons int,
idPacient int not null,
idSectie int not null,
Medic varchar(45) not null,
Tip_trimitere enum('internare','trimitere','nu are'),
Tip_consult varchar(45) not null,
Data_c DATE not null,
PRIMARY KEY(NrCons, Data_c),
Diagnostic varchar(45) not null,
Decizie enum("Se interneaza","Pleaca acasa"),
FOREIGN KEY (idPacient) REFERENCES Pacient(id),
FOREIGN KEY (idSectie) REFERENCES Sectie(id)
);

CREATE TABLE IF NOT EXISTS Internare


(
NrFoaie int not null unique auto_increment,
NrCons int not null,
PRIMARY KEY(NrFoaie, NrCons),
Data_I DATE not null,
Tipul_internarii enum('Urgenta','Bilet de internare'),
Motivele_internarii varchar(45) not null,
FOREIGN KEY (NrCons) REFERENCES Consult(NrCons)
);

CREATE TABLE IF NOT EXISTS FisaPacient


( NrFisa int not null unique primary key,
Temperatura float not null,
Tensiune VARCHAR(10) not null,
Puls int not null,
Evolutie enum('Vindecat','Ameliorat','Stationara'),
FOREIGN KEY (NrFisa) REFERENCES Internare(NrFoaie)
);

CREATE TABLE IF NOT EXISTS CerereLaborator


(
cod int not null unique auto_increment primary key,
NrFisa int not null,
data_c DATE not null,
prioritate enum('urgenta','normala'),
Tip_Analiza varchar(45),
FOREIGN KEY (NrFisa) REFERENCES FisaPacient(NrFisa)
);

CREATE TABLE IF NOT EXISTS BuletinAnalize


(
codCerere int not null unique primary key,
numeBiolog varchar(45),
Evaluarea_calitatii enum('Satisfacatoare','Buna','Rea'),
Rezultat varchar(45), #densitate, valori etc
Observatii varchar(45),
Pret int not null,
FOREIGN KEY (codCerere) REFERENCES CerereLaborator(cod)
);

CREATE TABLE IF NOT EXISTS Tratament


(
idTratament int not null auto_increment unique,
NrFisa int not null,
PRIMARY KEY(idTratament, NrFisa),
DenumireMedicament varchar(45) not null,
DenumireSanitar varchar(45) not null,
Cost float not null,
FOREIGN KEY (NrFisa) REFERENCES FisaPacient(NrFisa)
);

CREATE TABLE IF NOT EXISTS CerereMedicamente


(
id int unique auto_increment not null primary key,
idTratament int not null,
idProdus int not null,
Cantitate int not null,
FOREIGN KEY (idTratament) REFERENCES Tratament(idTratament)
);

CREATE TABLE IF NOT EXISTS Medicament


(
id int not null primary key,
denumireM varchar(45)

);

CREATE TABLE IF NOT EXISTS MaterialeSanitare


(
id int not null primary key,
denumireS varchar(45)

);

CREATE TABLE IF NOT EXISTS Produse


(
id int not null primary key,
pret float not null,
id_medicament int not null,
id_material int not null,
FOREIGN KEY (id_medicament) REFERENCES Medicament(id),
FOREIGN KEY (id_material) REFERENCES MaterialeSanitare(id)
);

ALTER TABLE CerereMedicamente


ADD FOREIGN KEY CerereMedicamente(idProdus) REFERENCES Produse(id);

CREATE TABLE IF NOT EXISTS FisaExternare


(
NrFoaie int not null unique primary key,
id_pacient int not null,
Cost_total float not null,
data_e date not null,
Epicriza varchar(200),
Recomandari varchar(200),
FOREIGN KEY (NrFoaie) REFERENCES FisaPacient(NrFisa),
FOREIGN KEY (id_pacient) REFERENCES Pacient(id)
);

CREATE TABLE IstoricPacient


(
id int unique auto_increment,
CNP varchar(13) unique,
PRIMARY KEY(id, CNP),
consultatii varchar(500),
tratamente varchar(500),
externari varchar(500),
FOREIGN KEY (id) REFERENCES Pacient(id)
);

create table if not exists Persoane


(id varchar(32) primary key,
nume varchar(32),
prenume varchar(32),
adresa varchar(32),
email varchar(50),
nrTel varchar(13),
typeOfPerson varchar(32));

create table if not exists Clienti


(id varchar(32) primary key,
parola varchar(32));

create table if not exists Angajati


(id varchar(32) primary key,
parola varchar(32),
idSucursala varchar(32),
idFunctie varchar(32),
salariu double);

create table if not exists Sucursala


(idSucursala varchar(32) primary key,
nume varchar(32),
adresa varchar(32),
nrTel varchar(32));

create table if not exists Functii


(idFunctie varchar(32) primary key,
denumire varchar(32));

create table if not exists Cont


(idCont varchar(32) primary key,
idPers varchar(32) ,
idTipCont int,
sold double,
idMoneda int);

create table if not exists Moneda


(idMoneda int primary key,
nume varchar(32));

create table if not exists TipCont


(idTipCont int primary key,
nume varchar(32),
descriere varchar(100),
comision double);

create table if not exists Tranzactii


(idTranzactie varchar(32) primary key,
idContSursa varchar(32),
dataTranzactie date,
tipTranzactie int,
suma double,
idContDestinatar varchar(32),
detalii varchar(100),
idMoneda int);

create table if not exists TipTranzactie


(tipTranzactie int primary key,
nume varchar(32));

alter table Clienti


add foreign key (id) references Persoane(id);

alter table Angajati


add foreign key (id) references Persoane(id),
add foreign key (idSucursala) references Sucursala(idSucursala),
add foreign key (idFunctie) references Functii(idFunctie);

alter table Cont


add foreign key (idTipCont) references TipCont(idTipCont),
add foreign key (idMoneda) references Moneda(idMoneda),
add foreign key (idPers) references Clienti(id);

alter table Tranzactii


add foreign key (tipTranzactie) references TipTranzactie(tipTranzactie),
add foreign key (idContDestinatar) references Cont(idCont),
add foreign key(idContSursa) references Cont(idCont),
add foreign key (idMoneda) references Moneda(idMoneda);

insert into Persoane


values("11624","Onute","Ioan","str. Florilor
nr.10","onute_ioan@yahoo.com","+40765345789","CLIENT"),
("11234","Pausan","Gheorghe","str. Macesului
nr.100","pausan_gheorghe@yahoo.com","+40764325189","CLIENT"),
("23624","Pop","Andreea","str. Dambovitei
nr.20","pop_andreeayahoo.com","+40745365788","ANGAJAT"),
("17654","Dumitrescu","Emilia","str. Observatorului
nr.23","dumitrescu_emilia@yahoo.com","+40764565798","CLIENT"),
("13334","Nemes","Dan","str. Cetatii
nr.98","nemes_dan@yahoo.com","+40744398789","ANGAJAT");

insert into Clienti


values("11624","parola1"),
("17654","parola2"),
("11234","parola5");

insert into Sucursala


values("123","Sucursala Cluj","str. Observatorului nr.123","0260546765"),
("99","Sucursala Bucuresti 1","str. Stefan cel Mare nr.1233","0260877765"),
("100","Sucursala Pitesti","str. Avram Iancu nr.123","0260877765"),
("101","Sucursala Bucuresti 2","str. Stefan cel Mare nr.1233","0260877765"),
("102","Sucursala Bucuresti 3","str. Ion Luca Caragiale nr.12","0260877765"),
("103","Sucursala Bucuresti 4","str. Bailor nr.53","0260877765"),
("104","Sucursala Ilfov","str. Ion Creanga nr.30","0260877765"),
("105","Sucursala Alba Iulia","str. Gheorghe Sincai nr.1","0260877765"),
("106","Sucursala Timisoara","str. Dumbrava nr.100","0260877765"),
("107","Sucursala Arad","str. Lucian Blaga nr.39","0260877765"),
("108","Sucursala Zalau","str. Octavian Goga nr.6","0260877765"),
("109","Sucursala Salaj","str. Voluntarlor nr.23","0260877765"),
("110","Sucursala Baia Mare","str. Marasesti nr.21","0260877765"),
("111","Sucursala Constanta","str. Cuza Voda nr.62","0260877765"),
("112","Sucursala Turda","str. Stefan cel Mare nr.188","0260877765"),
("113","Sucursala Targoviste","str. Sergent Hategan e nr.15","0260877765"),
("114","Sucursala Galati","str. Ecaterina Varga nr.17","0260877765");

insert into Functii


values ("22","contabil"),
("12","economist");

insert into Angajati


values ("23624","parola3","123","22",2300),
("13334","parola4","654","12",2150);

insert into Moneda


values(1, "lei"),
(2,"euro"),
(3,"dolari");

insert into TipCont


values (1,"Cont student","0% comision la orice tranzactie",0),
(2,"Cont normal","1% comision la tranzactii",1),
(3,"Depozit","2% comision la tranzactii",2),
(4,"Cont economii","2% comision la tranzactii",2);

insert into Cont(idCont, idPers, idTipCont, sold, idMoneda)


values("8765476589","11624",1,0,1),
("3451232876","17654",2,876.20,2),
("9980906545","11234",1,98,3);

insert into TipTranzactie


values (1,"transfer intre conturi"),
(2,"retragere"),
(3,"depunere"),
(4,"istoric tranzactii");

/*insert into Persoane


values("123","11624","str. Florilor
nr.10","onute_ioan@yahoo.com","+40765345789","CLIENT"),
("124","11234","str. Macesului
nr.100","pausan_gheorghe@yahoo.com","+40764325189","CLIENT"),
("125","23624","str. Dambovitei
nr.20","pop_andreeayahoo.com","+40745365788","ANGAJAT"),
("126","17654","str. Observatorului
nr.23","dumitrescu_emilia@yahoo.com","+40764565798","CLIENT"),
("127","13334","str. Cetatii
nr.98","nemes_dan@yahoo.com","+40744398789","ANGAJAT");*/
-- -------------------------------------------------------------------------
-- Triggger pentru verificarea CNP-ului si a Datei de nastere a pacientului
-- -------------------------------------------------------------------------

DELIMITER //
#DROP TRIGGER IF EXISTS Verifica_CNP;
CREATE TRIGGER verifica_CNP BEFORE INSERT ON Pacient
FOR EACH ROW BEGIN

IF NEW.Data_n>NOW() then
SET NEW.Data_n=NULL;

ELSE

IF substring(NEW.CNP,1,1)>'2' or substring(NEW.CNP,1,1)='0' THEN


SET NEW.CNP =NULL;
END IF;
END IF;
END //
DELIMITER ;

--
-----------------------------------------------------------------------------------
------
-- Triggger pentru verificarea temperaturii si pulsului (50<puls<120 |
35<temperatura<41.5)
--
-----------------------------------------------------------------------------------
------

#puls:
DELIMITER //
#DROP TRIGGER IF EXISTS Verifica_FisaPacient;
CREATE TRIGGER verifica_FisaPacient BEFORE INSERT ON FisaPacient
FOR EACH ROW BEGIN

IF NEW.Temperatura<35 or NEW.Temperatura>41.5 then


SET NEW.Temperatura=NULL;

ELSE

IF NEW.Puls<50 or NEW.Puls>120 THEN


SET NEW.Puls =NULL;
END IF;
END IF;
END //
DELIMITER ;

-- ----------------------
-- User pentru angajat
-- ----------------------
CREATE USER IF NOT EXISTS 'angajat'@'localhost';

GRANT SELECT ON Hospital.* TO 'angajat'@'localhost';


GRANT INSERT ON Hospital.* TO 'angajat'@'localhost';
GRANT UPDATE ON Hospital.* TO 'angajat'@'localhost';
GRANT DELETE ON Hospital.* TO 'angajat'@'localhost';
GRANT SHOW VIEW ON Hospital.* TO 'angajat'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.Adauga_Pacient TO 'angajat'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.AdaugaCont TO 'angajat'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.Creare_ClientNou TO 'angajat'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.afisareSucursale TO 'angajat'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.afisareAngajati TO 'angajat'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.Creare_fisaPacient TO 'angajat'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.Creare_tratament TO 'angajat'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.Cerere_medicament TO 'angajat'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.Creare_Cerere_Laborator TO
'angajat'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.Creare_Buletin_Analize TO
'angajat'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.Creare_Fisa_Externare TO 'angajat'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.Istoric_Pacient TO 'angajat'@'localhost';

-- ----------------------
-- User pentru aadmin
-- ----------------------
CREATE USER IF NOT EXISTS 'admin'@'localhost' ;
GRANT SELECT ON Hospital.* TO 'admin'@'localhost';
GRANT INSERT ON Hospital.* TO 'admin'@'localhost';
GRANT UPDATE ON Hospital.* TO 'admin'@'localhost';
GRANT DELETE ON Hospital.* TO 'admin'@'localhost';
GRANT SHOW VIEW ON Hospital.* TO 'administrator'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.schimbareSalariuAngajati TO
'administrator'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.Modificare_Pret_medicamente TO
'administrator'@'localhost';

-- ----------------------
-- User pentru client
-- ----------------------
CREATE USER IF NOT EXISTS 'client'@'localhost';
GRANT SELECT ON Hospital.* TO 'client'@'localhost';
GRANT INSERT ON Hospital.* TO 'client'@'localhost';
GRANT UPDATE ON Hospital.* TO 'client'@'localhost';
GRANT DELETE ON Hospital.* TO 'client'@'localhost';
GRANT SHOW VIEW ON Hospital.Vizualizare_CerereLaborator TO 'client'@'localhost';
GRANT EXECUTE ON PROCEDURE Hospital.Creare_Buletin_Analize TO 'client'@'localhost';

-- ----------------------------------------
-- View pentru vizualizarea pacientilor
-- ----------------------------------------

CREATE View Vizualizare_Pacienti AS


SELECT
id,Nume,CNP,Data_n,Adresa,Telefon,Profesie,Provenienta,Categorie,Grup_sangvin,Sex,A
sigurat FROM Pacient;

-- ----------------------------------------
-- View pentru vizualizarea consultului
-- ----------------------------------------
CREATE VIEW Vizualizare_Consult AS
SELECT Consult.NrCons,Consult.idPacient,Consult.idSectie,Pacient.Nume AS
NumePacient,Consult.Medic,Consult.Tip_Trimitere,Consult.Tip_Consult,Consult.Data_c,
Consult.Diagnostic,Consult.Decizie FROM Consult
INNER JOIN Pacient ON Pacient.id=Consult.idPacient ORDER BY Consult.Data_c;

-- ----------------------------------------
-- View pentru vizualizarea internarii
-- ----------------------------------------

CREATE VIEW Vizualizare_Internare AS


SELECT Internare.NrFoaie,
Internare.NrCons,Pacient.Nume,Consult.Medic,Internare.Tipul_Internarii,Internare.Mo
tivele_internarii, Consult.Diagnostic FROM Internare,Consult,Pacient
WHERE Pacient.id=Consult.idPacient and Consult.NrCons=Internare.NrCons and
Internare.Data_I=Consult.Data_c;

-- ---------------------------------------------
-- View pentru vizualizarea fiselor pacientilor
-- ---------------------------------------------

CREATE VIEW Vizualizare_FisaPacient AS


SELECT FisaPacient.NrFisa, Pacient.Nume, FisaPacient.Temperatura,
FisaPacient.Tensiune, FisaPacient.Puls, FisaPacient.Evolutie FROM FisaPacient,
Pacient, Consult, Internare
WHERE Pacient.id=Consult.idPacient and Consult.NrCons=Internare.NrCons AND
FisaPacient.NrFisa=Internare.NrFoaie and Internare.Data_I=Consult.Data_c;

-- ----------------------------------------
-- View pentru vizualizarea sectiilor
-- ----------------------------------------

CREATE VIEW Vizualizare_Sectii AS


SELECT * FROM Sectie;

-- ------------------------------------------------
-- View pentru vizualizarea Buletinului de analize
-- ------------------------------------------------

CREATE View Vizualizare_Buletinanalize AS


SELECT BuletinAnalize.codCerere, Pacient.nume as
NumePacient,BuletinAnalize.numeBiolog,CerereLaborator.Tip_Analiza,
BuletinAnalize.Evaluarea_calitatii, BuletinAnalize.Rezultat,
BuletinAnalize.Observatii, BuletinAnalize.Pret FROM
CerereLaborator,BuletinAnalize,FisaPacient, Pacient, Consult, Internare
WHERE Pacient.id=Consult.idPacient and Consult.NrCons=Internare.NrCons AND
FisaPacient.NrFisa=Internare.NrFoaie AND
BuletinAnalize.codCerere=CerereLaborator.cod AND
CerereLaborator.NrFisa=FisaPacient.NrFisa and Internare.Data_I=Consult.Data_c;

-- ------------------------------------------------
-- View pentru vizualizarea tratamentului
-- ------------------------------------------------
CREATE VIEW Vizualizare_Tratament as
SELECT Tratament.idTratament, Tratament.NrFisa,Pacient.nume as
NumePacient,Tratament.DenumireMedicament, Tratament.DenumireSanitar, Tratament.Cost
FROM Tratament,FisaPacient, Pacient, Consult, Internare
WHERE Pacient.id=Consult.idPacient and Consult.NrCons=Internare.NrCons AND
FisaPacient.NrFisa=Internare.NrFoaie AND Tratament.NrFisa=Fisapacient.NrFisa and
Internare.Data_I=Consult.Data_c;

-- ------------------------------------------------
-- View pentru vizualizarea Produselor
-- ------------------------------------------------

CREATE VIEW Vizualizare_Produse as


SELECT Produse.id,Produse.pret, Produse.id_medicament, Medicament.denumireM,
Produse.id_material, MaterialeSanitare.denumireS FROM Produse, Medicament,
MaterialeSanitare
WHERE Produse.id_medicament=Medicament.id and
Produse.id_material=MaterialeSanitare.id;

-- ------------------------------------------------
-- View pentru vizualizarea cererii de laborator
-- ------------------------------------------------

CREATE VIEW Vizualizare_CerereLaborator AS


SELECT * FROM CerereLaborator;

-- ------------------------------------------------
-- View pentru vizualizarea fisei de externare
-- ------------------------------------------------

CREATE VIEW Vizualizare_FisaExternare AS


SELECT FisaExternare.id_pacient,FisaExternare.NrFoaie,
Pacient.Nume,FisaExternare.data_e AS DataExternare, FisaExternare.Epicriza,
FisaExternare.Recomandari, FisaExternare.Cost_total FROM Pacient, FisaExternare,
FisaPacient
WHERE FisaPacient.NrFisa=FisaExternare.NrFoaie AND
Pacient.id=FisaExternare.id_pacient;

-- ------------------------------------------------
-- View pentru vizualizarea Istoricului pacientilor
-- ------------------------------------------------

CREATE VIEW Vizualizare_IstoricPacient AS


SELECT IstoricPacient.id, Pacient.nume, Pacient.CNP, IstoricPacient.consultatii,
IstoricPacient.tratamente, IstoricPacient.externari FROM IstoricPacient, Pacient
WHERE IstoricPacient.id=Pacient.id;

---------------------------------------------------------
-- Procedura pentru adaugarea unui pacient nou(client)
---------------------------------------------------------

DELIMITER //

CREATE PROCEDURE Adauga_Pacient(CNP varchar(13), nume varchar(45), data_n DATE,


profesie varchar(45), adresa varchar(45),telefon varchar(10),grup_sangvin
varchar(4),asigurat boolean, sex enum('M','F'),provenienta enum('rural','urban'),
categorie enum('Adult','Copil'))
BEGIN
SET @exista=NULL;

SELECT @lastPacient:=MAX(id) FROM Pacient;

if @lastPacient is null then


SET @lastPacient=1;
else
SET @lastPacient=@lastPacient+1;
END IF;
SELECT @exista:=CNP FROM Pacient where Pacient.CNP=CNP;
if @exista is NULL then
INSERT INTO
Pacient(id,CNP,Nume,Data_n,Profesie,Adresa,Telefon,Grup_sangvin,Asigurat,Provenient
a,Categorie,Sex)
values
(@lastPacient,CNP,nume,data_n,profesie,adresa,telefon,grup_sangvin,asigurat,proveni
enta,categorie,sex);
SELECT('new');
else
alter table FisaExternare drop foreign key fisaexternare_ibfk_2;
alter table Consult drop foreign key consult_ibfk_1;
alter table IstoricPacient drop foreign key istoricpacient_ibfk_1;
UPDATE Consult,Pacient SET Consult.idPacient=@lastPacient WHERE
Consult.idPacient = Pacient.id and Pacient.CNP=CNP;
UPDATE FisaExternare,Pacient SET
FisaExternare.id_pacient=@lastPacient WHERE FisaExternare.id_pacient=Pacient.id and
Pacient.CNP=CNP;
UPDATE IstoricPacient,Pacient SET IstoricPacient.id=@lastPacient WHERE
IstoricPacient.id=Pacient.id and Pacient.CNP=CNP;
UPDATE Pacient SET Pacient.id=@lastPacient, Pacient.Nume=nume,
Pacient.profesie=profesie, Pacient.adresa=adresa, Pacient.telefon=telefon,
Pacient.Asigurat=asigurat, Pacient.Provenienta=provenienta,
Pacient.Categorie=categorie WHERE Pacient.CNP=CNP;
UPDATE Introducere SET Introducere.id=@lastPacient WHERE
Introducere.CNP =CNP;
ALTER TABLE Consult
ADD CONSTRAINT consult_ibfk_1 FOREIGN KEY Consult(idPacient) REFERENCES
Pacient(id);
ALTER TABLE FisaExternare
ADD CONSTRAINT fisaexternare_ibfk_2 FOREIGN KEY
FisaExternare(id_pacient) REFERENCES Pacient(id);
ALTER TABLE IstoricPacient
ADD CONSTRAINT istoricpacient_ibfk_1 FOREIGN KEY IstoricPacient(id)
REFERENCES Pacient(id);
SELECT('update');
END IF;

END //
DELIMITER ;
---------------------------------------------------------
-- Procedura pentru adaugarea unui consult nou(asistenta)
----------------------------------------------------------

DELIMITER //

CREATE PROCEDURE Creare_Consult(idSectie int, medic varchar(45),tipTrimitere


enum('internare','trimitere','nu are'),tipConsult varchar(45),Diagnostic
varchar(45), Decizie enum('Se interneaza','Pleaca acasa'))
BEGIN

SET @ultimul=NULL;

SELECT @datac:= MAX(Data_c) FROM Consult;


SELECT @ultimul:=MAX(NrCons) FROM Consult where Data_c=@datac;

if YEAR(@datac) < YEAR(NOW()) then SET @ultimul:=1;


else if @ultimul is NULL then SET @ultimul=1;
else SET @ultimul:=@ultimul+1;
end if;
END IF;

SELECT @pacient:=MAX(id) FROM Pacient;


INSERT INTO Consult(NrCons,
idPacient,idSectie,Medic,Tip_trimitere,Tip_consult,Data_c,Diagnostic,Decizie)
values

(@ultimul,@pacient,idSectie,medic,tipTrimitere,tipConsult,NOW(),Diagnostic,Decizie)
;

END //
DELIMITER ;

------------------------------------------------------------------
-- Procedura pentru adaugarea unui pacient in registru(asistenta)
------------------------------------------------------------------

DELIMITER //
CREATE PROCEDURE Adauga_Registru(parafa int)
BEGIN

SELECT @lastPacient:=MAX(id) FROM Pacient;


SELECT @idSectie:= idSectie FROM Consult WHERE
Consult.idPacient=@lastPacient;
SELECT @CNP:=CNP FROM Pacient WHERE Pacient.id=@lastPacient;

SELECT @ultimul_nr :=MAX(NrCrt) FROM Registru;


SELECT @datac:=MAX(Data_c) FROM Consult;

if (@ultimul_nr is NULL) then SET @ultimul_nr:=1;


else
SET @ultimul_nr := @ultimul_nr+1;
end if;

SELECT @ultimul:=MAX(NrReg) from Registru where Registru.id=(SELECT


idSectie FROM Consult, Pacient, Introducere where @lastPacient=Consult.idPacient
LIMIT 1);
if @ultimul is NULL then SET @ultimul=1;
else SET @ultimul:=@ultimul+1;
end if;

INSERT INTO Registru(id, NrReg, NrCrt, Parafa)


values
(@idSectie, @ultimul, @ultimul_nr, Parafa);

INSERT INTO Introducere(CNP, idReg)


values
(@CNP, @idSectie);
END //
DELIMITER ;

-----------------------------------------------------------------------------------
--------------------
-- Procedura pentru actualizarea registrului, pentru pacientii care au mai fost
introdusi(asistenta)
-----------------------------------------------------------------------------------
--------------------

DELIMITER //

CREATE PROCEDURE Update_Registru(parafa int)


BEGIN
SELECT @lastPacient:=MAX(id) FROM Pacient;
SELECT @idSectie:= idSectie FROM Consult WHERE
Consult.idPacient=@lastPacient;
SELECT @CNP:=CNP FROM Pacient WHERE Pacient.id=@lastPacient;

SELECT @ultimul_nr :=MAX(NrCrt) FROM Registru;


SELECT @datac:=MAX(Data_c) FROM Consult;

if (@ultimul_nr is NULL) then SET @ultimul_nr:=1;


else
SET @ultimul_nr := @ultimul_nr+1;
end if;

SELECT @ultimul:=MAX(NrReg) from Registru where Registru.id=@idSectie


limit 1;

if @ultimul is NULL then SET @ultimul=1;


else SET @ultimul:=@ultimul+1;
end if;

INSERT INTO Registru(id, NrReg, NrCrt, Parafa)


values
(@idSectie, @ultimul, @ultimul_nr, Parafa);

UPDATE Introducere SET Introducere.idReg=@idSectie WHERE


Introducere.CNP=(SELECT CNP FROM Pacient WHERE Pacient.id=@lastPacient);
END //
DELIMITER ;

-----------------------------------------------------------------------------------
-------
-- Procedura pentru cautarea unui pacient in tabela de pacienti(asistenta)
-----------------------------------------------------------------------------------
------
DELIMITER //

CREATE PROCEDURE Cautare_Pacient(CNP varchar(13))


BEGIN

SET @Cnpul=NULL;
SELECT @Cnpul:=CNP from Introducere WHERE Introducere.CNP=CNP;

if @Cnpul is not NULL then


SELECT
id,Nume,CNP,Data_n,Adresa,Telefon,Profesie,Provenienta,Categorie,Grup_sangvin,Sex,A
sigurat FROM Pacient WHERE @Cnpul=Pacient.CNP;
else
SELECT CONCAT('Pacientul cu CNP-ul: ',CNP,' nu se afla in registru') AS
Rezultat2;

END IF;

END //
DELIMITER ;

-----------------------------------------------------------------------------------
-------
-- Procedura pentru crearea unui angajat(angajat)
-----------------------------------------------------------------------------------
------
DELIMITER //

CREATE PROCEDURE Creare_Angajat(pr_nume varchar(32), pr_prenume varchar(32),


pr_adresa varchar(32), pr_email varchar(50), pr_nrTel varchar(13), pr_parola
varchar(32), pr_numeSucursala varchar(32), pr_numeFunctie varchar(32),pr_salariu
double)
BEGIN
SELECT @nr_id := MAX(id) FROM Persoane;
IF (@nr_id IS NULL) THEN
SET @nr_id = 0;
END IF;
SET @nr_id = @nr_id+1;
set @idSuc=null;
select @idSuc:=idSucursala from Sucursala where
Sucursala.nume=pr_numeSucursala;
set @idFunc=null;
select @idFunc:=idFunctie from Functii where Functii.denumire=pr_numeFunctie;
INSERT INTO Persoane(id ,nume ,prenume ,adresa ,email, nrTel, typeOfPerson )
VALUES (@nr_id, pr_nume, pr_prenume, pr_adresa, pr_email, pr_nrTel, "Angajat");
INSERT INTO Angajati(id, parola, idSucursala, idFunctie, salariu) VALUES
(@nr_id, pr_parola, @idSuc,@idFunc, pr_salariu);

END //
DELIMITER ;

DELIMITER //

-----------------------------------------------------------------------------------
-------
-- Procedura pentru crearea unui nou cont de client(angajat)
-----------------------------------------------------------------------------------
------

DELIMITER //

CREATE PROCEDURE Creare_clientNou(pr_nume varchar(32), pr_prenume varchar(32),


pr_adresa varchar(32), pr_email varchar(50), pr_nrTel varchar(13), pr_parola
varchar(32))
BEGIN

SELECT @nr_id := MAX(id) FROM Persoane;


IF (@nr_id IS NULL) THEN
SET @nr_id = 0;
END IF;
SET @nr_id = @nr_id+1;
INSERT INTO Persoane(id ,nume ,prenume ,adresa ,email, nrTel, typeOfPerson )
VALUES (@nr_id, pr_nume, pr_prenume, pr_adresa, pr_email, pr_nrTel,"Client");
insert into Clienti(id,parola) values( @nr_id,pr_parola);

END //
DELIMITER ;

-----------------------------------------------------------------------------------
-------
-- Procedura pentru crearea unui trataemnt nou pacientului(asistenta)
-----------------------------------------------------------------------------------
------

DELIMITER //

CREATE PROCEDURE Creare_tratament(DenumireMedicament varchar(45), DenumireSanitar


varchar(45))
BEGIN
SET @cost=0;
SELECT @fisa:= MAX(NrFisa) FROM FisaPacient;

INSERT INTO Tratament(NrFisa, DenumireMedicament, DenumireSanitar, Cost)


VALUES(@fisa, DenumireMedicament, DenumireSanitar, @cost);
END; //
DELIMITER ;

-----------------------------------------------------------------------------------
--------------
-- Procedura pentru cererea de medicamente ce urmeaza a-i fi administrate
pacientului(asistenta)
-----------------------------------------------------------------------------------
---------------

DELIMITER //
#DROP Procedure Cerere_medicament;
CREATE PROCEDURE Cerere_medicament(idTratament int, cantitate int)
BEGIN
SELECT @denM:= DenumireMedicament FROM Tratament WHERE
idTratament=Tratament.idTratament;
SELECT @denS:= DenumireSanitar FROM Tratament WHERE
idTratament=Tratament.idTratament;

/*SELECT @idM:=id FROM Medicament WHERE denumireM=@denM;


SELECT @idS:=id FROM MaterialeSanitare WHERE denumireS=@denS;*/
#SELECT @idP:=id FROM Produse WHERE (Produse.id_medicament=(SELECT id FROM
Medicament WHERE denumireM=@denM) and Produse.id_material=(SELECT id FROM
MaterialeSanitare WHERE denumireS=@denS));

if((SELECT id FROM Produse WHERE (Produse.id_medicament=(SELECT id FROM


Medicament WHERE denumireM=@denM) and Produse.id_material=(SELECT id FROM
MaterialeSanitare WHERE denumireS=@denS))) is NULL) then SELECT('Nu exista
produsul');
else
SELECT @suma:=cantitate*Produse.pret FROM Produse, Tratament,
CerereMedicamente WHERE ((SELECT id FROM Produse WHERE
(Produse.id_medicament=(SELECT id FROM Medicament WHERE denumireM=@denM) and
Produse.id_material=(SELECT id FROM MaterialeSanitare WHERE
denumireS=@denS)))=Produse.id AND Tratament.idTratament=idTratament) LIMIT 1;
INSERT INTO CerereMedicamente(idTratament,idProdus, cantitate)
values
(idTratament,(SELECT id FROM Produse WHERE
(Produse.id_medicament=(SELECT id FROM Medicament WHERE denumireM=@denM) and
Produse.id_material=(SELECT id FROM MaterialeSanitare WHERE denumireS=@denS))),
cantitate);
UPDATE Tratament SET Tratament.Cost=Tratament.Cost+@suma WHERE
Tratament.idTratament=idTratament;
end if;
END //
DELIMITER ;

-----------------------------------------------------------------------------------
-------
-- Procedura pentru crearea unei cereri de laborator(cerere pentru o analiza)
(asistenta)
-----------------------------------------------------------------------------------
------

DELIMITER //
#DROP PROCEDURE Creare_Cerere_Laborator;
CREATE PROCEDURE Creare_Cerere_Laborator(nrFisa int, prioritate
enum('urgenta','normala'), tip varchar(45))
BEGIN
SELECT @nrMax:=MAX(nrFisa) FROM FisaPacient;
if(nrFisa>=1 and nrFisa<=@nrMax) then
INSERT INTO CerereLaborator(NrFisa, data_c, prioritate, Tip_Analiza)
VALUES
(nrFisa, NOW(), prioritate, tip);
else SELECT('Numar fisa nevalid!');
end if;
END //
DELIMITER ;

-----------------------------------------------------------------------------------
-------
-- Procedura pentru crearea unui Buletin de analize(biolog)
-----------------------------------------------------------------------------------
------

DELIMITER //
CREATE PROCEDURE Creare_Buletin_Analize(numeBiolog varchar(45),Evaluarea_Calitatii
enum('Satisfacatoare','Buna','Rea'),Rezultat varchar(45), Observatii varchar(45),
Pret int)
BEGIN

SET @cod=NULL;
SELECT
@cod:=MAX(cod)
FROM
CerereLaborator;
INSERT INTO
BuletinAnalize(codCerere,numeBiolog,Evaluarea_Calitatii,Rezultat,Observatii,Pret)
VALUES
(@cod,numeBiolog,Evaluarea_Calitatii,Rezultat,Observatii,Pret);

END //
DELIMITER ;

-----------------------------------------------------------------------------------
-------
-- Procedura pentru crearea unei fise de externare(asistenta)
-----------------------------------------------------------------------------------
------

DELIMITER //
#DROP PROCEDURE Creare_Fisa_Externare;
CREATE PROCEDURE Creare_Fisa_Externare(nrFisa int, epicriza varchar(45),recomandari
varchar(45))
BEGIN
if(nrFisa>=1 and nrFisa<=(SELECT MAX(NrFisa) FROM FisaPacient)) then
SELECT @id_pacient:=id FROM Pacient, Consult, Internare, FisaPacient
WHERE (Pacient.id=Consult.idPacient and Consult.NrCons=Internare.NrCons and
Internare.NrFoaie=FisaPacient.NrFisa and NrFisa=nrFisa);
SELECT @idSectie:= idSectie FROM Consult, Pacient WHERE
Consult.idPacient=@id_pacient;
UPDATE Sectie
SET
Nr_paturi=Nr_paturi+1
WHERE Sectie.id=@idSectie;
SELECT @asigurat:=Asigurat FROM Pacient WHERE @id_pacient=Pacient.id;
SELECT @costtotal:=Cost FROM Tratament where nrFisa=Tratament.NrFisa;
SELECT @costanalize:=SUM(Pret) FROM BuletinAnalize, CerereLaborator
WHERE BuletinAnalize.codCerere=CerereLaborator.cod and
CerereLaborator.NrFisa=nrFisa;
if(@costanalize IS NOT NULL) then SET @costtotal=@costtotal+@costanalize;
end if;
if(@asigurat is TRUE) then SET @costtotal:=0;
end if;
INSERT INTO FisaExternare(NrFoaie,id_pacient,Cost_total, data_e,
Epicriza,Recomandari)
values
(nrFisa,@id_pacient,@costtotal, NOW(), epicriza,recomandari);

else SELECT('Numar fisa nevalid!');


end if;

END //
DELIMITER ;

-----------------------------------------------------------------------------------
-------------------------------------
-- Procedura pentru modificarea in Fisa de pacient a starii
pacientului(temperatura,tensiune,puls,evolutie)(asistenta)
-----------------------------------------------------------------------------------
-------------------------------------

DELIMITER //
CREATE PROCEDURE Modifica_Pacient(nrfisa int,temp float, tens varchar(10), puls
int, evolutie enum('Vindecat','Ameliorat','Stationara'))
BEGIN

SET @exista:=NULL;

SELECT @exista:= NrFisa FROM FisaPacient WHERE FisaPacient.NrFisa=nrfisa;

if @exista is not null then

UPDATE FisaPacient SET FisaPacient.Temperatura=temp,


FisaPacient.Tensiune=tens, FisaPacient.Puls=puls, FisaPacient.Evolutie=evolutie
WHERE FisaPacient.NrFisa=nrfisa;
else
SELECT CONCAT('Pacientul cu NrFisa: ',nrfisa,' nu are o fisa de pacient') AS
Rezultat;
end if;

END //
DELIMITER ;

-----------------------------------------------------------------------------------
--------------------------
-- Procedura pentru adaugarea pacientului in Istoric(asistenta)
-----------------------------------------------------------------------------------
--------------------------

DELIMITER //
CREATE PROCEDURE Istoric_Pacient(CNP varchar(13))
BEGIN
SET @exista:=NULL;
SET @decizie:=NULL;
SET @ext:=NULL;
SET @medicatie:='';
SET @externare:='';
SELECT @exista:= CNP FROM IstoricPacient WHERE IstoricPacient.CNP=CNP;

SELECT @cons:=NrCons FROM Consult WHERE Consult.idPacient=(SELECT MAX(id)


FROM Pacient WHERE Pacient.CNP=CNP) LIMIT 1;
SELECT @sect:=nume FROM Sectie WHERE id=(SELECT idSectie FROM Consult WHERE
Consult.idPacient=(SELECT MAX(id) FROM Pacient WHERE Pacient.CNP=CNP) limit 1);
SELECT @data_c:= MAX(Data_c) FROM Consult WHERE Consult.NrCons=@cons;
SELECT @tip:= Tip_consult FROM Consult WHERE Consult.NrCons=@cons;
SELECT @medic:= Medic FROM Consult WHERE Consult.NrCons=@cons;
SELECT @decizie:= Decizie FROM Consult WHERE Consult.NrCons=@cons;
SET @consult:=CONCAT('Consult de tip ', @tip, ' la sectia ', @sect, '
efectuat in data ', @data_c, ' de catre dr. ', @medic,' cu decizia ', @decizie,
CHAR(13),'|');

if @decizie='Se interneaza' then

SELECT @tratament:=idTratament FROM Tratament, FisaPacient,


Internare WHERE Tratament.NrFisa=FisaPacient.NrFisa and
FisaPacient.NrFisa=Internare.NrFoaie and Internare.NrCons=@cons;
SELECT @medicamente:=DenumireMedicament FROM TRATAMENT WHERE
Tratament.idTratament=@tratament;
SET @medicatie:=CONCAT('Medicatie: ', @medicamente,
CHAR(13),'|');

SELECT @ext:=FisaExternare.NrFoaie FROM FisaExternare,


FisaPacient, Internare WHERE FisaExternare.NrFoaie=FisaPacient.NrFisa and
FisaPacient.NrFisa=Internare.NrFoaie and Internare.NrCons=@cons;
SELECT @data_e:= data_e FROM FisaExternare WHERE
FisaExternare.NrFoaie=@ext;
SELECT @epicriza:= Epicriza FROM FisaExternare WHERE
FisaExternare.NrFoaie=@ext;
SELECT @recomandari:= Recomandari FROM FisaExternare WHERE
FisaExternare.NrFoaie=@ext;
SET @externare:=CONCAT('Pacient externat in data ', @data_e, ' cu
epicriza ', @epicriza, ' si recomandarile ', @recomandari, CHAR(13),'|');

end if;

if @exista is null then


INSERT INTO IstoricPacient(CNP, consultatii, tratamente, externari)
VALUES(CNP, @consult, @medicatie, @externare);

else SELECT @consult2:= consultatii FROM IstoricPacient WHERE


IstoricPacient.CNP=CNP;
SELECT @medicatie2:= tratamente FROM IstoricPacient WHERE
IstoricPacient.CNP=CNP;
SELECT @externare2:= externari FROM IstoricPacient WHERE
IstoricPacient.CNP=CNP;
SET @consult2:=CONCAT(@consult2, @consult);
SET @medicatie2:=CONCAT(@medicatie2, @medicatie);
SET @externare2:=CONCAT(@externare2, @externare);
UPDATE IstoricPacient
SET IstoricPacient.consultatii=@consult2,
IstoricPacient.tratamente=@medicatie2, IstoricPacient.externari=@externare2 WHERE
IstoricPacient.CNP=CNP;

end if;
END //
DELIMITER ;

-----------------------------------------------------------------------------------
--------------------------
-- Procedura pentru modificarea numarului de paturi pe sectie(administrator)
-----------------------------------------------------------------------------------
--------------------------

DELIMITER //
CREATE PROCEDURE Modificare_NrPaturi(id int, nrpaturi int)
BEGIN
SET @exista:=NULL;
SELECT @exista:= id FROM Sectie WHERE Sectie.id=id;

if @exista is not null then

UPDATE Sectie SET Sectie.Nr_paturi=nrpaturi WHERE Sectie.id=id;


else
SELECT CONCAT('Sectia cu id-ul: ',id,' nu exista') AS Rezultat;
end if;
END //
DELIMITER ;

-----------------------------------------------------------------------------------
-------------------------
-- Procedura pentru modificarea preturilor medicamentelor(administrator)
-----------------------------------------------------------------------------------
--------------------------

DELIMITER //

CREATE PROCEDURE Modificare_Pret_medicamente(id int, pret int)


BEGIN

SET @exista:=NULL;
SELECT @exista:= id FROM Produse WHERE Produse.id=id;

if @exista is not null then

UPDATE Produse SET Produse.pret=pret WHERE Produse.id=id;


else
SELECT CONCAT('Produsul nu exista') AS Rezultat;
end if;

END //
DELIMITER ;

DROP PROCEDURE IF EXISTS adaugareCont;


DELIMITER //

CREATE PROCEDURE adaugareCont(pr_numePers varchar(32),pr_prenumePers


varchar(32),pr_numeCont varchar(32),pr_moneda varchar(32))
BEGIN
SELECT @nr_id := MAX(idCont) FROM Cont;
IF (@nr_id IS NULL) THEN
SET @nr_id = 0;
END IF;
SET @nr_id = @nr_id+1;
set @idPer=null;
select @idPer:=idPers from Persoane where (Persoane.nume=pr_numePers and
Persoane.prenume=pr_prenumePers);
set @idTipC=null;
select @idTipC:=idTipCont from TipCont where TipCont.nume=pr_numeCont;
set @idMon=null;
select @idMon:=idMoneda from Moneda where Moneda.nume=pr_moneda;
INSERT INTO Cont(idCont ,idPers ,idTipCont ,sold ,idMoneda ) VALUES
(@nr_id,@idPer,@idTipC,0,@idMon);
END //

DELIMITER //

DELIMITER //

CREATE PROCEDURE Cautare_Cont(pr_numeClient varchar(32),pr_prenumeClient


varchar(32))
BEGIN

SET @idCl=NULL;
SELECT @idCl:=id from Persoane WHERE (Persoane.nume=pr_numeClient and
Persoane.prenume=pr_prenumeClient);

if @idCl is not NULL then


SELECT idCont,sold FROM Cont WHERE @idCl=Cont.idPers;
else
SELECT CONCAT(pr_numeClient,' ',pr_prenumeClient,"nu are cont") AS
Rezultat2;

END IF;

END //
DELIMITER ;

DELIMITER ;

DELIMITER //

CREATE PROCEDURE Cautare_Client(pr_idCont varchar(32))


BEGIN

SET @idPer=NULL;
SELECT @idPer:=idPers from Cont WHERE Cont.idCont=pr_idCont;

if @idPer is not NULL then


SELECT nume,prenume,adresa,email,nrTel FROM Persoane WHERE
@idPer=Persoane.id;
else
SELECT CONCAT("Nu exista client cu acest cont.") AS Rezultat2;

END IF;

END //
DELIMITER ;

DELIMITER ;

DELIMITER //

CREATE PROCEDURE adaugareFunctie(pr_idFunctie varchar(32) ,pr_denumire varchar(32))


BEGIN
SELECT @nr_id := MAX(idFunctie) FROM Functii;
IF (@nr_id IS NULL) THEN
SET @nr_id = 0;
END IF;
SET @nr_id = @nr_id+1;
INSERT INTO Functii(idFunctie, denumire) VALUES (@nr_id, pr_denumire);

END //
DELIMITER ;

DELIMITER ;
DROP VIEW IF EXISTS afisareSucursale;
#
CREATE VIEW afisareSucursale AS
SELECT Sucursala.idSucursala AS "Id sucursala", Sucursala.nume AS "Nume",
Sucursala.adresa AS "Adresa", Sucursala.nrTel AS "Numar tel"
FROM Sucursala;
#

DELIMITER ;

DELIMITER ;

DELIMITER //

CREATE PROCEDURE adaugareFunctie(pr_idFunctie varchar(32) ,pr_denumire varchar(32))


BEGIN
SELECT @nr_id := MAX(idFunctie) FROM Functii;
IF (@nr_id IS NULL) THEN
SET @nr_id = 0;
END IF;
SET @nr_id = @nr_id+1;
INSERT INTO Functii(idFunctie, denumire) VALUES (@nr_id, pr_denumire);

END //
DELIMITER ;
DELIMITER ;

DROP PROCEDURE IF EXISTS schimbareADrdersesa;


DELIMITER //

CREATE PROCEDURE schimbareADrdersesa(pr_id varchar(32),adresaNoua varchar(32))


BEGIN

update Persoane set adresa=adresaNoua where id=pr_id;


END //
DELIMITER ;

DELIMITER ;

DROP PROCEDURE IF EXISTS schimbareEmail;


DELIMITER //

CREATE PROCEDURE schimbareEmail(pr_id varchar(32),emailNou varchar(50))


BEGIN

update Persoane set email=emailNou where id=pr_id;


END //
DELIMITER ;

DELIMITER ;

DROP PROCEDURE IF EXISTS schimbareNrTel;


DELIMITER //

CREATE PROCEDURE schimbareNrTel(pr_id varchar(32),telNou varchar(13))


BEGIN
update Persoane set nrTel=telNou where id=pr_id;
END //
DELIMITER ;

DELIMITER ;

DROP PROCEDURE IF EXISTS schimbareParolaClient;


DELIMITER //

CREATE PROCEDURE schimbareParolaClient(pr_id varchar(32),parolaNoua varchar(32))


BEGIN

update Clienti set parola=parolaNoua where id=pr_id;


END //
DELIMITER ;

DELIMITER ;

DROP PROCEDURE IF EXISTS schimbareParolaAngajati;


DELIMITER //

CREATE PROCEDURE schimbareParolaAngajati(pr_id varchar(32),parolaNoua varchar(32))


BEGIN

update Angajati set parola=parolaNoua where id=pr_id;


END //
DELIMITER ;

DELIMITER ;

DROP PROCEDURE IF EXISTS schimbareSalariuAngajati;


DELIMITER //

CREATE PROCEDURE schimbareSalariuAngajati(pr_id varchar(32),salariuNou varchar(32))


BEGIN

update Angajati set salariu=salariuNou where id=pr_id;


END //
DELIMITER ;

-----------------------------------------------------------------------------------
-------
-- Procedura pentru cautarea unui angajat dintr o sucursala(asistenta)
-----------------------------------------------------------------------------------
------

DELIMITER //

CREATE PROCEDURE Cautare_Angajat(numeAngajat varchar(32),numeSucursala varchar(32))


BEGIN

SET @numeAng=NULL;
SELECT @numeAng:=nume from Persoane WHERE Persoane.nume=numeAngajat;
Set @idAng=null;
select @idAng:=id from Persoane where Persoane.nume=numeAngajat;
set @idSuc=null;
select @idSuc:=idSucursala from Angajati where Angajati.id=@idAng;
set @numeSuc=null;
select @numeSuc:=nume from Sucursala where Sucursala.idSucursala=@idSuc;

if (@numeAng and @numeSuc) is not NULL then


SELECT id,idSucursala,idFunctie,salariu FROM Angajati where id=(Select id
from Persoane where Persoane.nume=@numeAng);
else
SELECT CONCAT('',numeAngajat,' nu este angajat la ',numeSucursala) AS
Rezultat2;

END IF;

END //
DELIMITER ;
drop view if exists Vizualizare_tranzactii;
CREATE VIEW Vizualizare_tranzactii as
SELECT Persoane.id as "Id",Tranzactii.dataTranzactie as "Data tranzactie",
TipTranzactie.nume as "Tipul tranzactiei", Tranzactii.suma as "Suma" from
Persoane, Tranzactii,TipCont,TipTranzactie
WHERE Persoane.id=Tranzactii.idContSursa and
TipTranzactie.tipTranzactie=Tranzactii.tipTranzactie;

DELIMITER //

CREATE PROCEDURE Cautare_Cont(pr_numeClient varchar(32),pr_prenumeClient


varchar(32))
BEGIN

SET @idCl=NULL;
SELECT @idCl:=id from Persoane WHERE (Persoane.nume=pr_numeCleint and
Persoane.prenume=pr_prenumeClient);

if @idCl is not NULL then


SELECT idCont,sold FROM Cont WHERE @idCl=Cont.idPers;
else
SELECT CONCAT(pr_numrClient,' ',pr_prenumeClient,"nu are cont") AS
Rezultat2;

END IF;

END //
DELIMITER ;

DELIMITER //

CREATE PROCEDURE Cautare_Client(pr_idCont varchar(32))


BEGIN

SET @idPer=NULL;
SELECT @idPer:=idPers from Cont WHERE Cont.idCont=pr_idCont;

if @idPer is not NULL then


SELECT nume,prenume,adresa,email,nrTel FROM Persoane WHERE
@idPer=Persoane.id;
else
SELECT CONCAT("Nu exista client cu acest cont.") AS Rezultat2;
END IF;

END //
DELIMITER ;

DROP PROCEDURE IF EXISTS stergereCont;


DELIMITER //

CREATE PROCEDURE stergereCont(pr_idCont varchar(32))


BEGIN
DELETE FROM Cont
WHERE idCont = pr_idCont;
END //
DELIMITER ;

DROP PROCEDURE IF EXISTS stergereAngajat;


DELIMITER //

CREATE PROCEDURE stergereAngajat(pr_id varchar(32))


BEGIN
DELETE FROM Angajati
WHERE id= pr_id;
update Persoane set typeOfPerson="Client" where id=pr_id;
END //
DELIMITER ;

DROP PROCEDURE IF EXISTS stergereClient;


DELIMITER //

CREATE PROCEDURE stergereClient(pr_id varchar(32))


BEGIN
DELETE FROM Cont
WHERE idPers= pr_id;

DELETE FROM Clienti


WHERE id= pr_id;

END //
DELIMITER ;

DROP VIEW IF EXISTS afisareIstoricTranzactii;


#
CREATE VIEW afisareIstoricTranzactii AS
SELECT Tranzactii.idContSursa AS "Id persoana Sursa", Tranzactii.dataTranzactie AS
"Data tranzactie",Tranzactii.tipTranzactie AS "Tip tranzactie",Tranzactii.suma AS
"Suma", Tranzactii.detalii AS "Detalii"
FROM Tranzactii;
#

DELIMITER ;

DROP VIEW IF EXISTS afisareClienti;


#
CREATE VIEW afisareClienti AS
SELECT Clienti.id AS "Id client", Persoane.nume AS "Nume",Persoane.prenume AS
"Prenume",Persoane.adresa AS "Adresa", Persoane.email AS "Email", Persoane.nrTel AS
"Numar tel."
FROM Clienti
JOIN Persoane ON Persoane.id = Clienti.id;
#

DELIMITER ;

DROP VIEW IF EXISTS afisareAngajati;


#
CREATE VIEW afisareAngajati AS
SELECT Angajati.id AS "Id angajat", Persoane.nume AS "Nume",Persoane.prenume AS
"Prenume", Functii.denumire AS "Functie", Angajati.salariu AS "Salariu",
Persoane.adresa AS "Adresa", Persoane.email AS "Email", Persoane.nrTel AS "Numar
tel."
FROM Angajati
JOIN Persoane ON Persoane.id = Angajati.id
JOIN Functii ON Functii.idFunctie = Angajati.idFunctie;
#

DELIMITER ;

DROP VIEW IF EXISTS afisareSucursale;


#
CREATE VIEW afisareSucursale AS
SELECT Sucursala.idSucursala AS "Id sucursala", Sucursala.nume AS "Nume",
Sucursala.adresa AS "Adresa", Sucursala.nrTel AS "Numar tel"
FROM Sucursala;
#

DELIMITER ;

Potrebbero piacerti anche