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

Update podtaka via StoredProcedure

[es] :: MS SQL :: Update podtaka via StoredProcedure

[ Pregleda: 1806 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

CallMeSaMaster

Član broj: 43611
Poruke: 466
92.36.196.*



+1 Profil

icon Update podtaka via StoredProcedure24.07.2009. u 23:45 - pre 179 meseci
Pozdrav svima,

imam jedan naizgled(bar meni) trivijalan problem:

Imam proceduru koja radi update podataka, recimo setuje neki status uposlenika.
Ja bih htio to odradim tako da u SP proslijedim listu ID-eva uposlenika i da odradim update i to ovako:

@sqlWhere nvarchar(100)

as

update uposlenici set Aktivan = 1
where uposlednikid in (@sqlWhere)

Naravno UposlenikID je int, autoincrement, PK i sta god da proslijedim update padne

Primjer

recimo da sma iz code-a proslijedio sqlWhere kao '21', '23','120'

Gornji dio upodate pada! Ali ako direktno kucam u Query

update uposlenici set Aktivan = 1
where uposlednikid in ('21','23','120')

onda radi.

Mozeli neko pomoci kako da setujem ovaj ulazni parametar?

LP
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

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

Jabber: fedya@elitesecurity.org
Sajt: devtechgroup.com


+34 Profil

icon Re: Update podtaka via StoredProcedure25.07.2009. u 10:07 - pre 179 meseci
Ako bas moras tako onda mozes da napises nesto kao

Code:

declare @sql nvarchar(255)

set @sql = 'update uposlenici set Aktivan = 1 where uposlednikid in (' + @sqlWhere + ')'

exec @sql


Mada bi bilo bolje da niz prosledis kao xml, parsiras u proceduri u privremenu tabelu...
Every hamster has his day.
 
Odgovor na temu

M E N E
borislav
Temerin

Član broj: 30434
Poruke: 231
93.87.185.*



+1 Profil

icon Re: Update podtaka via StoredProcedure26.07.2009. u 08:50 - pre 179 meseci
zar nije bolje da primas jedan ID, a proceduru pozivas u petlji?
To je, ako se ne varam, najopstije resenje... Ovde imas ogranicenje broja karaktera (100) , ili (255)... a i sve mi deluje kao hakeraj; a sa bazom se ne hakerise :-)

Uhvatili ste me nespremnog
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
92.36.140.*



+1 Profil

icon Re: Update podtaka via StoredProcedure26.07.2009. u 11:42 - pre 179 meseci
Citat:

zar nije bolje da primas jedan ID, a proceduru pozivas u petlji?
To je, ako se ne varam, najopstije resenje... Ovde imas ogranicenje broja karaktera (100) , ili (255)... a i sve mi deluje kao hakeraj; a sa bazom se ne hakerise :-)


Nije hakeraj. Objasnit cu ti u cemu je bio problem iako sam ga drugacije riejsio:

Apliakcija koju trenutno radim funkcionise na sledecm principu:

Sef Odjela moze da aktivira radnike koji u nekom trenutku mogu da rade neke operacije. Recimo On za danas moze da odredi 5 radnika koji ce moci da rade storno racuna. Da bi to uradio, dobije listu svih radnika koji su mu na raspolaganju i klikom na svaki pamti se id radnika. Posto ja pravim program, znam da sigurno nikad nece imat vise od 10 radnika :) i zbog toga to ogranicenje od 100 karaktera...

Posle se izvrsavanjem ove proc radnici aktiviraju i to je to...Nikakav hakeraj, to je za malu djecu. Ja upravo radim u drugom smjeru :)

To je bila poenta problema...

Rijesio sam to tako sto sam jednostavo iz code-a uradio update a ne preko sp...
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

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

Jabber: fedya@elitesecurity.org
Sajt: devtechgroup.com


+34 Profil

icon Re: Update podtaka via StoredProcedure26.07.2009. u 12:53 - pre 179 meseci
Citat:
M E N E: zar nije bolje da primas jedan ID, a proceduru pozivas u petlji?
To je, ako se ne varam, najopstije resenje... Ovde imas ogranicenje broja karaktera (100) , ili (255)... a i sve mi deluje kao hakeraj; a sa bazom se ne hakerise :-)


Ne bih se slozio ni po jednom pitanju. Pozivanje procedure iz DB layera u petlji je sto se optimizacije tice najgore resenje, posebno ako se baza i aplikacija nalaze na razlicitm masinama.
Sto se broja karaktera tice, samo sam lupio 255, uvek mozes da stavis nvarchar(max) i izbegnes taj problem.

Ja bih taj problem resio tako sto bih napravio proceduru koja prima xml. Brzo googlanje je vratilo link sa vrlo jednostavnim primerom: http://weblogs.asp.net/jgallow...-2005-with-xml-parameters.aspx trebalo bi da resi problem.
Every hamster has his day.
 
Odgovor na temu

.:Marvin:.
Taurunum

Član broj: 36626
Poruke: 94
91.143.212.*



Profil

icon Re: Update podtaka via StoredProcedure28.07.2009. u 07:37 - pre 179 meseci
Po meni, resenje sa dinamickim SQLom koje je Fedya ponudio sasvim zadovoljava.

Drugo (a slicno) resenje je da napravi UDF koja parsira string sa vrednostima odvojenim zarezom a kao rezultat vraca tabelu, pa onda koristi ono sto je naveo u prvom mejlu.
Onda bi mogao da ima:

Code:

update uposlenici set Aktivan = 1
where uposlednikid in (select vrednost from dbo.my_parsing_UDF(@sqlWhere))

 
Odgovor na temu

[es] :: MS SQL :: Update podtaka via StoredProcedure

[ Pregleda: 1806 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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