Language: SQL
Package Dawnoises
CREATE DATABASE dawnoises; CREATE TABLE produse( cod_produs number(10) not null primary key, cod_producator number(10) not null, denumire varchar(30), tip number(3) not null, cantitate number(8,2), um char(3), pret number(8,2) ); CREATE TABLE stoc( cod_inregistrare number(10) not null primary key, cod_produs number(10) not null, unitati number(3), data_modificare date ); CREATE TABLE producatori( cod_producator number(10) not null primary key, nume varchar(30), adresa varchar(50) ); CREATE TABLE tipuri( tip_produs number(3) not null primary key, descriere varchar(30) ); CREATE TABLE vanzari( cod_vanzare number(10) not null primary key, cod_produs number(10) not null, cod_client number(10) not null, unitati number(3), data_vanzare date ); CREATE TABLE clienti( cod_client number(10) not null primary key, nume varchar(30), puncte_fidelitate number(5), adresa varchar(50), telefon char(10), ); CREATE TABLE rezervari( cod_rezervare number(10) not null primary key, cod_client number(10) not null, cod_masa number(10) not null, data_inceput date, data_sfarsit date, ora_inceput char(8), ora_sfarsit char(8) ); CREATE TABLE mese( cod_masa number(10) not null primary key, capacitate number(3), descriere varchar(50) ); CREATE OR REPLACE package pack_dawnoises as procedure vanzare( cod_prod produse.cod_produs%TYPE, cod_cl clienti.cod_client%TYPE, unitati integer ); procedure rezervare_masa( cod_cl clienti.cod_client%TYPE, cod_masa mese.cod_masa%TYPE, data_incep rezervari.data_inceput%TYPE, data_sf rezervari.data_sfarsit%TYPE, ora_incep rezervari.ora_inceput%TYPE, ora_sf rezervari.ora_sfarsit%TYPE ); function stoc_total return number; procedure acordare_puncte_client( cod_cl clienti.cod_client%TYPE, puncte integer ); end; CREATE OR REPLACE package body pack_dawnoises as ----------------------- -- PRIVATE FUNCTIONS -- ----------------------- function getClientByCod(v_cod_cl clienti.cod_client%TYPE) return varchar is v_nume_cl clienti.nume%TYPE begin select nume into v_nume_cl from clienti where cod_client = v_cod_cl; return v_nume_cl; end; function getProdByCod(v_cod_prod produse.cod_produs%TYPE) return varchar is v_nume_prod produse.denumire%TYPE begin select denumire into v_nume_prod from produse where cod_produs = v_cod_prod; return v_nume_prod; end; function getMasaByCod(v_cod_masa mese.cod_masa%TYPE) return varchar is v_nume_masa mese.descriere%TYPE begin select descriere into v_nume_masa from mese where cod_masa = v_cod_masa; return v_nume_masa; end; ----------------------- -- PUBLIC PROCEDURES -- ----------------------- procedure vanzare( v_cod_prod in produse.cod_produs%TYPE, v_cod_cl in clienti.cod_client%TYPE, v_unit in integer) is cod_max integer; begin select max(cod_vanzare) into cod_max from vanzari; insert into vanzari values (cod_max+1, v_cod_prod, v_cod_cl, v_unit, sysdate); dbms_output.put_line(v_unit || ' unitati din rodusul ' || getProdByCod(v_cod_prod) ||' au fost vandute clientului ' || getClientByCod(v_nume_cl) ||' cu succes!'); end; procedure rezervare_masa( v_cod_cl clienti.cod_client%TYPE, v_cod_masa mese.cod_masa%TYPE, v_data_incep rezervari.data_inceput%TYPE, v_data_sf rezervari.data_sfarsit%TYPE, v_ora_incep rezervari.ora_inceput%TYPE, v_ora_sf rezervari.ora_sfarsit%TYPE ) is cod_max integer; begin select max(cod_rezervare) into cod_max from rezervari; insert into rezervari values (cod_max+1, v_cod_cl, v_cod_masa, v_data_incep, v_data_sf, v_ora_incep, v_ora_sf); dbms_output.put_line('Masa ' || getMasaByCod(v_cod_masa) ||' a fost rezervata de clientul ' || getClientByCod(v_nume_cl) ||' pentru data de ') || TO_CHAR(v_data_incep); end; procedure acordare_puncte_client( v_cod_cl in clienti.cod_client%TYPE, v_puncte in integer) is v_puncte_total integer; begin update clienti set puncte_fidelitate = puncte_fidelitate + v_puncte where cod_client = v_cod_cl; select puncte_fidelitate into v_puncte_total from clienti where cod_client = v_cod_cl; dbms_output.put_line('Clientul ' || getClientByCod(v_nume_cl) ||' are acum ') || TO_CHAR(v_puncte_total) ||' puncte de fidelitate!'); end; function stoc_total return number is v_stoc_total number; begin select sum(unitati) into v_stoc_total from stoc; return v_stoc_total; end; end;
Tags:
Report Abuse
Subscribe
Discuss
What's new
What is it
New Snippet
Recent Snippets
My Snippets
Web Code
Search

