ورود

View Full Version : بروز رسانی با CURSOR در SP



mostafa_zainy
سه شنبه 30 شهریور 1389, 11:11 صبح
سلام دوستان من توی یک SP یک متغییر از نوع جدول دارم که میخوام با استفاده از CURSOR مقادیر بعضی از سطرهای اونو تغییر بدم این کد رو گذاشتم ولی بعد از اجرا پیام میده که CURSOR من فقط خوندنی هست.

این کدهایی که من نوشتم



declare @tbl TABLE (_Bedehkar int , _Bestankar int , _
Baghimande int , _Tashkhis TName )


declare tblCur CURSOR
LOCAL
KEYSET
FOR SELECT _Bedehkar , _Bestankar, _Tashkhis , _Baghimande
FROM @tbl
--FOR UPDATE


open tblCur


fetch tblCur into @Bedeh,@Bestan,@tashkhis,@mablagh

while (@@FETCH_STATUS = 0) begin

set @Baghimande = @Baghimande + (@Bestan - @Bedeh)

if @Baghimande < 0 set @tashkhis = 0
else set @tashkhis = 1

UPDATE @tbl SET _Baghimande = ABS(@Baghimande) , _Tashkhis=@tashkhis
WHERE CURRENT OF tblCur

fetch next from tblCur into @Bedeh,@Bestan,@tashkhis,@mablagh

end

بهزادصادقی
چهارشنبه 31 شهریور 1389, 03:49 صبح
به نظر نمی رسه شما اصلا احتیاچ به استفاد از یک cursor دارید. ببینید آیا کد زیر همان کاری را که می خواهید بکنید انجام نمی دهد:



declare @tbl TABLE (_Bedehkar int , _Bestankar int , _Baghimande int , _Tashkhis TName );

update
@tbl
set
_Baghimande = abs( _Baghimande + (_Bedehkar - _Bedehkar) ),
_Tashkhis = case when _Baghimande + (_Bedehkar - _Bedehkar) < 0 then 0 else 1 end
from
@tbl;