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

Select i "parametatski" WHERE

[es] :: MS SQL :: Select i "parametatski" WHERE

[ Pregleda: 1587 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Astek
Marković Darko
Beograd

Član broj: 128308
Poruke: 160
..252.195.adsl.dyn.beotel.net.



+1 Profil

icon Select i "parametatski" WHERE03.12.2011. u 12:37 - pre 150 meseci
Da li je moguće u SP preneti preko neke promenljive uslov za WHERE klauzulu.
Otprilike ovako nekako:

....

@USLOV nvarchar..

....

.. SELECT * FROM tbl WHERE @USLOV...

Bilo kako samo da uslov za WHERE prosledim kao parametar.

Zahvaljujem unapred.



 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.adsl-3.sezampro.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: Select i "parametatski" WHERE03.12.2011. u 17:07 - pre 150 meseci
Možeš da složiš komandu kao tekst pa da je izvršiš pomoću komande sp_executesql
npr:
Code:

@USLOV nvarchar..
....

DECLARE @SQL nvarchar(300)
SET @SQL = 'SELECT * FROM tbl WHERE ' + @USLOV
EXEC sp_executesql @SQL
 
Odgovor na temu

Astek
Marković Darko
Beograd

Član broj: 128308
Poruke: 160
..252.195.adsl.dyn.beotel.net.



+1 Profil

icon Re: Select i "parametatski" WHERE03.12.2011. u 18:29 - pre 150 meseci
Problem je u tome što imam proceduru od oko 200 redova, u okviru nje neki cursor gde u FOR delu moram da ubacim taj uslov.
...
ovako nekako:
DECLARE cursorCC cursor FOR SELECT polje FROM tabela WHERE @USLOV
....

 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.adsl-3.sezampro.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: Select i "parametatski" WHERE03.12.2011. u 18:40 - pre 150 meseci
Mislim da bi trebao da preispitaš svoj kod (strukturu tabela i skript) jer su kursori u principu nepoželjni.
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Select i "parametatski" WHERE05.12.2011. u 15:14 - pre 150 meseci
Takodje nije pozeljno koristiti dinamicki kod za zadavanje parametara. Evo zasto:

Code:

DECLARE @USLOV nvarchar..
SET @Uslov = 'Id = 7; TRUNCATE TABLE Artikli ;'

DECLARE @SQL nvarchar(300)
SET @SQL = 'SELECT * FROM tbl WHERE ' + @USLOV
EXEC sp_executesql @SQL



Ovo se zove SQL injection. Varijabla @SQL ce da izgleda ovako:
Code:
SELECT * FROM tbl WHERE Id=1; TRUNCATE TABLE Artikli
i to ce sp_executesql lepo da izvrsi.

U SQL se paramatrizacija kverija resava upotrebom funkcija koje vracaju tabelu.
Code:
SELECT * FROM dbo.MyFunction(@Praam1, @param2, @Param3...)
U funkciji moze da bude i kursor, ako je bas neophodno.

Ako je situacija takva da se ne mogu definisati kolone za parametre unapred, onda je neki problem u pitanju. A ako koristis kursore, ima sanse da ima i vecih problema. Ne mora da znaci, kursori naravno nisu zabranjeni, ali mogu da ukazuju na nepotpuno razumevanje problma i kako SQL spada u celu sliku.

 
Odgovor na temu

[es] :: MS SQL :: Select i "parametatski" WHERE

[ Pregleda: 1587 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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