[ 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
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.