Primer za obradu na serveru pomocu uskladištenih procedura

Sve vezano za programiranje i savete

7/15/2010 12:59:59 PM
Gravatar
Total Posts 8

Primer za obradu na serveru pomocu uskladištenih procedura

Dajem jedan skolski primer (nije nalickan do kraja ali je koncept regularan i tako cemo raditi) koji radi i koji prebacuje profakturu u fakturum, upisuje jedan slog u zaglavlje fakture na osnovu podataka iz profakture i onoiko slogova stavki koliko ima u stavkama profakture.
ovo radi nad shemom aragon-a, pa proanalizirajte kako se to radi jer cemo SVE OBRADE raditi na ovaj nacin kroz procedure.

Naravno, sada nisam imao vremena da definisem i EXCEPTION HANDLER-e i slicno ali kada napravimo sve za produkciju to ce izgledati mnogo detaljnije.

SRC CODE:


/*brisemo proceduru ako postoji*/
DROP PROCEDURE IF EXISTS p_profak_fak;

/* kreiramo proceduru p_profak_fak
* ulazni parametri su broj (ID) profakture,
* i sifra radnika koji radi obradu*/
CREATE PROCEDURE p_profak_fak(IN p_brojprofakture int,IN p_sifrad int)
COMMENT 'PREBACIVANJE PROFAKTURA => FAKTURA'
BEGIN

/*upisujemo u zaglavlje fakture */
INSERT
INTO f_fakzag
(dat_izd,
parid,
status_dok,
parime,
datknj,
genbroj,
tip,
sifrad,
brspoljdo,
nacnas,
datum_valute,
datum_prometa)

/*na osnovu SELECT-a odabrane profakture*/
SELECT(SELECT now()
FROM dual) /*tekuce vreme*/,parid /*sifra partnera je ista*/,
status_dok /*
dokument je OK */
,parime /*naziv partnera je isti prepisuje se*/,NULL /*datum
knjizenja je NULL-faktura nije proknjizena*/
,NULL /*GENBROJ je NULL unece se triggerom*/,'U' /*ULAZNA FAKTURA*/
,p_sifrad,id /*ovo je broj profakture SPOLJNI DOKUMENT*/,'P' /*
faktura je nastala od profakture*/
,datum_valute /*prepisuje se*/,datum_prometa

/*prepisuje se*/
FROM f_profakzag

/* BIRAMO SAMO JEDNU PROFAKTURU
* SA WHERE ID USLOVOM*/
WHERE id = p_brojprofakture;

/* potvrdimo transakciju za zaglavlje
* zbog ID-fakture da uensemo u stavke*/
COMMIT;

/*UNOSIMO STAVKE FAKTURE*/
INSERT
INTO f_faktab
(id,
zagid,
sifrob,
opis,
kol,
cena,
pdvproc,
vrednost,
parbatproc,
ukupno)

/*NA OSNOVU SELECT-a iz stavki profakture*/
SELECT id,(SELECT max(id)
FROM f_fakzag) /*zaglavlje se trazi upitom*/,sifrob,opis,kol,cena
,pdvproc,vrednost,rabatproc,ukupno
FROM f_profaktab pft
WHERE pft.zagid = p_brojprofakture;

/*potvrdimo citavu transakciju*/
COMMIT;
END




PROCEDURU POZIVATE SA:

call p_profak_fak(1,1);

Mapa sajta | Prilagodjeno stampi | © 1993 - 2019 Zemljoradnička zadruga Baćo Vrbas | Napravljeno uz pomoc mojoPortal | HTML 5 | CSS | design by dcarter