Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 2.266 pregleda

Najnovija ↓

Select i "parametatski" WHERE 03.12.2011. u 13:37 · pre 181 mesec #1
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.



Re: Select i "parametatski" WHERE 03.12.2011. u 18:07 · pre 181 mesec #2
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
Re: Select i "parametatski" WHERE 03.12.2011. u 19:29 · pre 181 mesec #3
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
....

Re: Select i "parametatski" WHERE 05.12.2011. u 16:14 · pre 181 mesec #5
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.

:-)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme