[ 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.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.