• 2 odgovora
  • 5.081 pregleda
Pravljenje petlji-sql 27.06.2007. u 13:33 · pre 235 meseci #1
Pitanje je mozda trivijalno a mozda i nije,naime-potrebna mi je petlja(procedura -firebird 2.0) koja uporedjuje rezultate i na osnovu toga daje rezultat.

Primer:

tabela- proba

sa poljima - id kolicina oznaka
1 12 A
2 15 B
3 22 C
4 ..................
......................

ako korisnik ukuca broj 11 (imput parametar)rezultat je null
ako je broj 14 rezulatat je A (izmedju 12 i 15 rezultat je A (znaci >=))
ako je broj 22 rezultat je B (izmedju 15 i 22 rezultat je A)
itd...
nesto u fazonu do while ali sql-verzija.
Moze li se to napraviti?
Re: Pravljenje petlji-sql 28.06.2007. u 00:40 · pre 235 meseci #2
Za ovo imaš dve mogućnosti:

1. koristi FOR SELECT konstrukciju i
2. rekurzivno pozivaj istu proceduru.

FOR SELECT se izvršava kao FOR petlja koja prolazi kroz sve zapise koji se dobijaju sa SELECt. Pogledaj malo dokumentaciju, pa ako zapneš javi.

Ako ti to odgovara, proceduru možeš da pozivaš rekurzivno (pozivaš istu proceduru iz nje same). Za ovu varijantu moraš da imaš jasno definisam princip kako dolaziš do rešenja problema, pa tek onda, ako rekurzija može da reši taj problem, koristiš ovakav način rada. Takođe, moraš da budeš dodatno obazriv da ne bi ušao u beskonačnu petlju.

Eto toliko za sada, iz glave. Ako ti treba neko konkretnije objašnjenje, pitaj.
Potpis
"There is a theory which states that if ever anybody discovers exactly what the
Universe is for and why it is here, it will instantly disappear and be replaced by
something even more bizarre and inexplicable. There is another theory which states
that this has already happened."
-- Douglas Adams
Re: Pravljenje petlji-sql 17.07.2007. u 00:10 · pre 234 meseci #3
Code:

CREATE PROCEDURE P (
    PARAMETAR INTEGER)
RETURNS (
    REZULTAT VARCHAR (10))
AS
BEGIN
  FOR SELECT OZNAKA
    FROM PROBA
    WHERE KOLICINA < :PARAMETAR
    ORDER BY KOLICINA DESC
    INTO :REZULTAT
  DO
  BEGIN
    SUSPEND;
    EXIT;
  END
END

Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme