[ M E N E @ 16.10.2007. 12:38 ] @
Dakle, ako u jednoj stored proceduri treba da izvrsim dva selecta, a rezultati drugog zavise direktno od rezultata prvog... kako to da uradim?
Tacnije
select a, b, c from [tabela1] where (uslov)
...
select x, y, z from [tabela2] where (uslov povezan sa a, b, c iz prvog selecta)


Kako najelegantnije da radim ove stvari? Da se razumemo prvi select mi treba ne samo zbog drugog selecta (prosledjujem ga biznis sloju), ali kako da u istom tom iskazu snimim vrednosti koje mi terbaju za drugi select (nesto kao dodeljivanje vrednosti promenljivim u iskazu select, gde bih ranije pripremio promenljive @a, @b, i @c)
[ Fedya @ 16.10.2007. 13:30 ] @
Nisi bas bio najjasniji, ali pokusacu da ti pomognem.
Rezultate prvog upita mozes snimiti u promenjive. Nesto kao:

declare @a nvarchar(10)
declare @b nvarchar(10)
declare @c nvarchar(10)

SELECT @a = a, @b=b, @c=c FROM...

pa onda to koristi u drugom upitu.
Takodje mozes da napravis podupit:

select x, y, z from [tabela2] where y IN (select a from [tabela1] where (uslov))

ima jos nekoliko mogucnosti, ako ti ovo ne resava problem, postuj konkretan primer, pa cemo probati da resimo.
[ Teks @ 16.10.2007. 22:26 ] @
u slučaju da su promenljive skalar, Fedya je dao odgovor

SELECT @a = a, @b=b, @c=c FROM...

Ako je promenljiva matrica moglo bi ovako

Declare @tmp1 as Table
.
.
.

Insert into @tmp1
Select a,b,c From ...

privremene tabele sa # rade mnogo sporije nego promenljive tipa tabele
[ M E N E @ 17.10.2007. 08:06 ] @
OK, hvala
Mislio sam da postoji fora otprilike:

SELECT a, b, c, @d=d, @e=e, f, g,.... from... where....
ali ne moze se kombinovati dodeljivanje vrednosti parametrima i vracanje vrednosti...
Dakle, prvo jedan upit (u odnosu na onaj gore)

SELECT @d=d, @e=e ....

pa onda drugi

SELECT a, b, c, f, g,.....

E, ekspresno menjam pitanje...
ako mi je kolona id tipa uniqueidentifier, i napravim select u proceduri:

SELECT id, a from [tabela1] WHERE id=@id

skript radi kad ga proverim u SQL Menagement studiu, a kad je pozove kolega iz C#, ne radi, tj. radi, ali mu vrati prazan skup.
Promenim i stavim sledece

SELECT a from [tabela1] WHERE id=@id
(dakle, u povratne vrednosti ne trazim kolonu id, sve ostalo je isto)

i radi lepo.
Napominjem, kada poteram proceduru radi sve, ali kad se pozove iz c# okruzenja, ima taj problem. Ima li iko ideju???

[ Fedya @ 17.10.2007. 10:09 ] @
Ako ti procedura radi kad je poteras a ne radi iz aplikacije problem je do aplikacije
Proveri (u C# kodu) kako se prosledjuju parametri, proveri tipove, povratne vrednosti i sl.