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

Uskladistene procedure u Ms SQL Serveru

[es] :: MS SQL :: Uskladistene procedure u Ms SQL Serveru

[ Pregleda: 845 | Odgovora: 9 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

goranue
Bojovic Goran
Uzice

Član broj: 69498
Poruke: 3
*.dialup.neobee.net.



Profil

icon Uskladistene procedure u Ms SQL Serveru12.11.2006. u 21:35

Umam jedan problem.
Na koji nacin mogu uskladistenu proceduru da napisem u sledecem obliku

...
Select ....
Where (...)
if @abd =1
and (iskaz1...)
else
and (iskaz2...)

Gde je @abc ulazni parametar (npr. izbor na radio dugmetu u nekom programu)
12.11.2006. u 21:35 

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1589
*.dialup.neobee.net.

Sajt: www.clickersoftware.com


Profil

icon Re: Uskladistene procedure u Ms SQL Serveru12.11.2006. u 21:49
Code:

CREATE PROCEDURE test 
   @abd int
AS 
SELECT * FROM tabela WHERE polje = @abd
GO

Valjda si na to mislio.
vidi GoranVucicevic #28045

www.clickersoftware.com
12.11.2006. u 21:49 

goranue
Bojovic Goran
Uzice

Član broj: 69498
Poruke: 3
*.neobee.net.



Profil

icon Re: Uskladistene procedure u Ms SQL Serveru13.11.2006. u 15:39
Hvala na odgovoru, ali nisam na to mislio.

Potrebno je da procedura izgleda otprilike ovako:
(tabela naka na primer ima polja: a, b, c, d, e, f)
x, y, z, g, h su neke konstante
CREATE PROCEDURE test
@abd int
AS
SELECT * FROM tabela WHERE a<x and b>y
IF @abd = 1
(and c =z or d <g)
else
and f>h
GO
Znaci potrebno je da unutar "Select" iskaza ubacim iskaz "IF".
13.11.2006. u 15:39 

Fedya
Fedor Hajdu
Senior Software Engeneer, Ammado Internet Services
Dublin // Novi Sad

Član broj: 28246
Poruke: 561
*.ADSL.neobee.net.

Jabber: fedya@elitesecurity.org
Sajt: www.ammado.com


Profil

icon Re: Uskladistene procedure u Ms SQL Serveru13.11.2006. u 16:02
Mozes da napises nesto kao:

WHERE a<b AND (CASE @param WHEN 1 THEN c<d ELSE f<g END)

nisam siguran (ne mogu sad da proverim) ali tako nekako bi trebalo da moze. Ako ne podje eksperimentisi malo sa CASE za to sluzi

[Ovu poruku je menjao Fedya dana 13.11.2006. u 19:53 GMT+1]
while ( ! ( succeed = try() ) );
13.11.2006. u 16:02 

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1589
*.dialup.neobee.net.

Sajt: www.clickersoftware.com


Profil

icon Re: Uskladistene procedure u Ms SQL Serveru13.11.2006. u 16:20
Moraces da koristis sp_executesql
vidi GoranVucicevic #28045

www.clickersoftware.com
13.11.2006. u 16:20 

logic_rabbit
Radenko Zec
banjaluka

Član broj: 74458
Poruke: 181
*.lanaco.com.

Sajt: www.developers.ba


Profil

icon Re: Uskladistene procedure u Ms SQL Serveru15.11.2006. u 07:16
IF @abd = 1
BEGIN
SELECT * FROM tabela WHERE a<x and b>y
and (c =z or d <g)
END
ELSE
BEGIN
SELECT * FROM tabela WHERE a<x and b>y
and f>h
END

[Ovu poruku je menjao logic_rabbit dana 15.11.2006. u 14:54 GMT+1]
logic_rabbit (MCAD,MCSD,MCT,MCTS-Windows development,MCPD)
www.sqlpass.rs.ba
15.11.2006. u 07:16 

Fedya
Fedor Hajdu
Senior Software Engeneer, Ammado Internet Services
Dublin // Novi Sad

Član broj: 28246
Poruke: 561
*.ADSL.neobee.net.

Jabber: fedya@elitesecurity.org
Sajt: www.ammado.com


Profil

icon Re: Uskladistene procedure u Ms SQL Serveru15.11.2006. u 08:16
Citat:
logic_rabbit: IF @abd = 1
BEGIN
SELECT * FROM tabela WHERE a<x and b>y
(and c =z or d <g)
else
and f>h
END
ELSE
BEGIN
SELECT * FROM tabela WHERE a<x and b>y
END


Da, ovo je dobar primer kako NE TREBA raditi. U redu, ovo je jednostavan primer, ali da je u pitanju neka slozenija procedura bukvalno bi imao kopiju iste procedure sa malim razlikama. Odlucis da promenis nesto, moras dobro da pazis da se to menja na oba mesta inace... Ovo je leglo bagova.
while ( ! ( succeed = try() ) );
15.11.2006. u 08:16 

logic_rabbit
Radenko Zec
banjaluka

Član broj: 74458
Poruke: 181
*.lanaco.com.

Sajt: www.developers.ba


Profil

icon Re: Uskladistene procedure u Ms SQL Serveru15.11.2006. u 13:56
Bila je greska u brzini.Ovo je resenje a sad da li je pametno to je druga stvar...
logic_rabbit (MCAD,MCSD,MCT,MCTS-Windows development,MCPD)
www.sqlpass.rs.ba
15.11.2006. u 13:56 

jablan
Mladen Jablanović
Beograd

Član broj: 8286
Poruke: 2995
212.200.222.*

Sajt: blog.radioni.ca


Profil

icon Re: Uskladistene procedure u Ms SQL Serveru15.11.2006. u 18:57
Definitivno nije dobro svako rešenje koje duplira kôd...

Ovi problemi se rešavaju jednostavnim proširenjem where uslova:

npr. primer koji ti iznosiš:
Citat:
goranue:
SELECT * FROM tabela
WHERE a<x and b>y
IF @abd = 1
(and c =z or d <g)
else
and f>h

bi se napisao kao:
Code:

WHERE a<x and b>y
AND (@abd <> 1 OR c = z or d < g)
AND (@abd = 1 OR f > h)

Inače, pitanje nema apsolutno nikakve veze sa uskl. procedurama.
15.11.2006. u 18:57 

logic_rabbit
Radenko Zec
banjaluka

Član broj: 74458
Poruke: 181
*.lanaco.com.

Sajt: www.developers.ba


Profil

icon Re: Uskladistene procedure u Ms SQL Serveru16.11.2006. u 07:02
Citat:
jablan: Definitivno nije dobro svako rešenje koje duplira kôd...

Ovi problemi se rešavaju jednostavnim proširenjem where uslova:

npr. primer koji ti iznosiš:

bi se napisao kao:
Code:

WHERE a<x and b>y
AND (@abd <> 1 OR c = z or d < g)
AND (@abd = 1 OR f > h)

Inače, pitanje nema apsolutno nikakve veze sa uskl. procedurama.



Tvoje resenje je posve tacno i elegantno resenje koje se cesto koristi.

[Ovu poruku je menjao logic_rabbit dana 16.11.2006. u 14:25 GMT+1]
logic_rabbit (MCAD,MCSD,MCT,MCTS-Windows development,MCPD)
www.sqlpass.rs.ba
16.11.2006. u 07:02 

[es] :: MS SQL :: Uskladistene procedure u Ms SQL Serveru

[ Pregleda: 845 | Odgovora: 9 ]

Postavi temu Odgovori

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