[ darko_sudarov @ 27.06.2007. 13:33 ] @
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?
[ rambo @ 28.06.2007. 00:40 ] @
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.
[ obucina @ 17.07.2007. 00:10 ] @
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