[ prginfo @ 04.12.2009. 08:54 ] @
Koristim FB 2.0 (2.1 release) i D2007. Želeo bi malo bolje da naučim pisanje procedura u FB (imam iskustva sa procedurama pod drugim server okruženjem). Hteo bih da započnem jedan jednostavan primer i da ga uz pomoć foruma uradim (napišemo proceduru). Ideja (problematika) je sledeća: Postoje tabele u sledećoj formi: TABELA ID Integer NAZIV Varchar(20) MIN Integer MAX Integer PN Varchar(2) BROJ1 Varchar(3) BROJ2 Varchar(3) TABELA_ST ID Integer NAZIV Varchar(20) MINMAX Varchar(3) BROJ1 Varchar(3) BROJ2 Varchar(3) Želeo bih da napišem proceduru koja će se izvršavati pri svakom insertu u tabelu TABELA na sledeći način: TABELA_ST.ID je Autoincreament polje koje služi kao primary TABELA_ST.NAZIV = TABELA.NAZIV TABELA_ST.BROJ1 = TABELA.BROJ1 TABELA_ST.BROJ2 = TABELA.BROJ2 i sada ono što je ključno, a to je kako se dobija polje TABELA_ST.MINMAX Potrebno je da prilikom inserta u tabelu TABELA procedura uzima parametre MIN, MAX i PN, gde je MIN minimalni broj, MAX maksimalni broj a PN može da ima vrednosti P,N ili S Kada se uradi insert u tabelu TABELA, procedura radi n upisa u TABELA_ST po principu TABELA_ST.ID je Autoincreament polje koje služi kao primary TABELA_ST.NAZIV = TABELA.NAZIV TABELA_ST.BROJ1 = TABELA.BROJ1 TABELA_ST.BROJ2 = TABELA.BROJ2 MINMAX se određuje na sledeći način Uzima se TABELA.MIN i TABELA.MAX i to je raspon (npr. MIN=1 MAX=10) Uzima se TABELA.PN, koje može imati vrednosti P (parni), N(neparni), S(svi) Ako je MIN=1, MAX=10 i PN=S onda se uradi 10 upisa u tabelu TABELA_ST gde se ID normalno povećava za 1, NAZIV se upisuje iz tabele TABELA.NAZIV za taj upis (isto važi i za polja BROJ1 i BROJ2), a MINMAX ide za svaki upis od 1 do 10. Ako je npr. vrednost TABELA.PN=P onda će se po istom principu upisivati podaci u tabelu TABELA_ST, samo što će se gledati parni brojevi u nizu od 1 do 10, pa će biti 5 upisa (2,4,6,8,10) Ako je npr. vrednost TABELA.PN=N onda će se po istom principu upisivati podaci u tabelu TABELA_ST, samo što će se gledati neparni brojevi u nizu od 1 do 10, pa će biti 5 upisa (1,3,5,7,9) Nadam se da sam bio jasan i ne suvise konfuzan. Unapred se zahvaljujem na pomoci. |