Hvala na odgovima
Obadva upita rade stim što ja koristim onaj koji je objavio Zidar
jer se samo jednom koristi SELECT pa me apikacija ne zafrkava.
Inače ovaj upit koristim kao podupit u transakcijama zaključivanja robnih dokumenata,
Upit mi kontroliše da li će poslije zaključenja dokumenta artikli otići u minus na lageru te mi javlja koji su to arikli otišli u minus na lagerui.
Ukoliko je rezultat upita null onda će transakcija dokumenta biti potvrđena.
Kako se ranije nisam sretao sa komandama
[data()] i FOR XML PATH('')
Vas pitam koliko je ovo zahtjevno za server, to jeste da li troši neke ogromne preformanse ako se u upitu pojavljuje u najgoru ruku do 100 rekorda
koje ce smjestiti u jedan
i drugo pitanje koliko je panetno držati transakciju ne porvrđenu dok se ovaj upit ne odradi.
Sada se bojim da ne izazovem DEDLOCKOVE na serveru ukoliko je transakcija upisa otvorena dok se ne izvrši upit koji cu navesti
Lijep pozdrav
Unaprijed zahvalan
Code:
select
case
when
(select
count(*)
from
(select art_id, sum(kol) as kol
from sdo
where doc_id = :id and '#skl_fin_tip#' <>'F'
group by art_id) as p
left outer join lager l on (p.art_id = l.art_id and l.skl_id = :skl_id)
left outer join art a on l.art_id = a.id
where
(Round(l.kolicina,4)+Round(p.kol,4)) < 0)=0 then Convert(Bit,1)
else
Convert(Bit,0)
end as Valid
,'Skladište '+(select naziv from skladiste where id = (:skl_id)) + '. Tražena količina prelazi u minus na lageru za artikal: '+
(
select
RTRIM ((a.sifra+' '+a.naziv))+ '; ' as [data()]
from
(select art_id, sum(kol) as kol
from sdo
where doc_id = :id and '#skl_fin_tip#' <>'F'
group by art_id) as p
left outer join lager l on (p.art_id = l.art_id and l.skl_id = :skl_id)
left outer join art a on l.art_id = a.id
where
(Round(l.kolicina,4)+Round(p.kol,4)) < 0
for XML path ('')
) as Msg
S poštovanjem