[ Mikelly @ 19.11.2007. 10:05 ] @
Napravio sam jednu uskladistenu proceduru, sa jednim parametrom koji mi stoji u WHERE klauzuli i koji je tipa int.

Sve je ok dok ja unosim taj parametar i vrace mi podatke koji se ticu samo jednog artikla, ali sto kad hocu da izvucem sve podatke, kako onda?

Da li da stavim da je parametar recimo '*' ili moram to da rijesim kroz if->then->else naredbe T-SQL-a?

Ne znam da li me razumijete. Interesujeme, sto da cinim sa parametrom kad hocu cjelokupan set rezultata a ne samo sto stoji uz WHERE.

Pozdrav i hvala.
[ aleksandarpopov @ 19.11.2007. 10:34 ] @
Imas ovde nesto slicno
http://www.elitesecurity.org/t289445-0#1741418
[ Teks @ 19.11.2007. 17:11 ] @
* nije možda zgodna jer ti je parametar int tipa
ali bi mogla recimo nula, a za char npr ""

Znači ako je nula
vrati sve
else
vrati = parametar

imaj u vidu da se broj različitih procedura u if-ovima širi sa brojem parametara

Drugim rečima ako imaš 5 parametara kojima hoćeš da prosleđuješ nulu
imaćeš 2^5=32 procedure, što može da bude problem za odžavanje

Veći problem je što ovoliki if-ovi mogu ukopati performanse upita

[ M E N E @ 20.11.2007. 12:26 ] @
zasto u klasi ne resis sta ti treba (jedan red ili svi), pa pozoves dve razlicite procedure, koje ce se jako brzo izvrsiti na serveru?
[ degojs @ 20.11.2007. 20:17 ] @
Citat:
Sve je ok dok ja unosim taj parametar i vrace mi podatke koji se ticu samo jednog artikla, ali sto kad hocu da izvucem sve podatke, kako onda?


Npr. imaš ulazni parametar @ulazID int

SELECT ... WHERE ( ID = @ulazID OR @ulazID = 0 )

Ako želiš sve vrednosti, proslediš 0 (uz uslov da u tabeli polje ID ne može biti vrednost 0). Ako želiš samo zapise gde je ID=5, onda, naravno, proslediš 5.
[ Teks @ 20.11.2007. 22:29 ] @
Više različitih procedura mi je komplikovalo priču, iovako ih ima kao lovačkoj priči
Rešenje sa

ID = @ulazID OR @ulazID = 0

na prvi pogled izgleda da je za klasu bolje od rešenja sa if-om