Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pomoc u vezi store procedure!

[es] :: PostgreSQL :: Pomoc u vezi store procedure!

[ Pregleda: 3238 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

miličić.marko
Miličić Marko
Novi Sad

Član broj: 12598
Poruke: 346
89.124.143.*

Sajt: milicicmarko.blogspot.com


+1 Profil

icon Pomoc u vezi store procedure!20.04.2007. u 23:27 - pre 206 meseci
Imam neku tabelu na primer (KORISNICI) koja ima kolone: id, ime i prezime.
Kako napisati stored proceduru koja ce mi za zadato ime i prezime vratiti id korisnika a ukoliko taj korisnik ne postoji, prvo ce ga insertovati za zatim vratit njegov ID.


Hvala
Skripte iz oblasti računarstva na Srpskom jeziku
kontakt email milicic [tacka] marko [na] gmail [tacka] com

Numizmatička kolekcija:
http://numismaticscollection.blogspot.com/
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.ADSL.neobee.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Pomoc u vezi store procedure!21.04.2007. u 00:11 - pre 206 meseci
Predpostavljam da ti je id definisan kao serial tip.
Evo ti telo funkcije
Code:

-- p_ime = ulazni parametar - ime korisnika
-- p_prezime = ulazni parametar - prezime korisnika

DECLARE

  l_id INTEGER;

BEGIN

  LOOP

    -- potrazi id korisnika sa zadatim imenom i prezimenom
    SELECT INTO l_id
           id
      FROM korisnici
     WHERE ime = p_ime
       AND prezime = p_prezime;

    -- ako postoji odgovarajuci korisnik,
    -- vrati njegov id i izadji iz funkcije
    IF FOUND THEN
      RETURN l_id;
    END IF;  

    -- posto korisnik ne postoji, ubaci ga 
    INSERT INTO korisnici (ime, prezime)
    VALUES (p_ime, p_prezime);

  END LOOP;

END;

"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

miličić.marko
Miličić Marko
Novi Sad

Član broj: 12598
Poruke: 346
*.aib.ie.

Sajt: milicicmarko.blogspot.com


+1 Profil

icon Re: Pomoc u vezi store procedure!23.04.2007. u 09:29 - pre 206 meseci
Hvala na pomoci, ali imam jedan problem. Naime, posto prezime nije obavezno, ono moze biti NULL a kada null dodje kao argument funkcije, onda sintaksa SELECT i INSERT querija nije dobra jer se ocekuje nesto tipa "IS NULL" a ne "= NULL". Cackao sam po konfig fajlu POSTGRESQL-a i nasao opciju koja konvertuje = NULL u IS NULL. Iz phpmyadmin-a sve radi kako treba ali iz stored procedure nece. Ima li logike da se kveri iz stored procedure drugacije ponasa od externog querija? ili nesto drugo nije uredu.

Hvala unapred

Skripte iz oblasti računarstva na Srpskom jeziku
kontakt email milicic [tacka] marko [na] gmail [tacka] com

Numizmatička kolekcija:
http://numismaticscollection.blogspot.com/
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.suonline.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Pomoc u vezi store procedure!23.04.2007. u 10:24 - pre 206 meseci
1. Napravi grananje procedure u zavisnosti da li je prezime NULL ili nije.

2. Ima logike za razlicito ponasanje. To sto si podesio da ti upiti umesto IS NULL korise =NULL ne znaci da si podesio da ti to vazi i za PL/pgSQL.

3. To sto si ukljucio transform_null_equals unistava celu logiku koja stoji iza specijalne vrednosti NULL.
Na primer:
Ispravno je da NULL AND NULL = NULL, jer se to interpretira kao: NEPOZNATO I NEPOZNATO. Pa to je i dalje NEPOZNATO!
Posto si ti ukljucio gore pomenutu opciju dobijas:
NULL AND NULL = TRUE Dobijas da je NEPOZNATO I NEPOZNATO tacno?!?
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

miličić.marko
Miličić Marko
Novi Sad

Član broj: 12598
Poruke: 346
*.aib.ie.

Sajt: milicicmarko.blogspot.com


+1 Profil

icon Re: Pomoc u vezi store procedure!23.04.2007. u 13:39 - pre 206 meseci
Hvala na savetu, ali stvar se komplikuje kada imam 5 parametara i 3 od njih mogu biti NULL? Telo funkcije bi postalo i suvise komplikovano.... ukoliko bih dinamicki kreirao query koji se izvrsava izgubio bih na performansama jer se plan izvrsavanja ne bi pamtio vec bi se prilikom svakog pozivanja racunao ponovo?

Sta predlazes kao resenje?
Skripte iz oblasti računarstva na Srpskom jeziku
kontakt email milicic [tacka] marko [na] gmail [tacka] com

Numizmatička kolekcija:
http://numismaticscollection.blogspot.com/
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.suonline.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Pomoc u vezi store procedure!23.04.2007. u 14:21 - pre 206 meseci
Za pocetak, posalji celu DDL skriptu za kreiranje tabele.

Dalje, koliko to korisnika ocekujes da ces imati u tabeli? Kojim tempom ce biti ubacivani novi korisnici (5 korisnika u minuti, 2 korisnika svake sekunde, ...)?
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

miličić.marko
Miličić Marko
Novi Sad

Član broj: 12598
Poruke: 346
89.124.143.*

Sajt: milicicmarko.blogspot.com


+1 Profil

icon Re: Pomoc u vezi store procedure!23.04.2007. u 23:58 - pre 206 meseci
Ocekujem ogromno opterecenje nad tom tabelom.. reda velicine 100-1000 u sekundi. Korisnike sam naveo kao primer radi se o necem drugom :) Hvala ti puno na odgovorima i pomoci.
Skripte iz oblasti računarstva na Srpskom jeziku
kontakt email milicic [tacka] marko [na] gmail [tacka] com

Numizmatička kolekcija:
http://numismaticscollection.blogspot.com/
 
Odgovor na temu

[es] :: PostgreSQL :: Pomoc u vezi store procedure!

[ Pregleda: 3238 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.