PDA

View Full Version : استفاده از cursor در view



az.heidarzadeh
شنبه 15 بهمن 1390, 10:30 صبح
سلام
با تریگر نتونستم روی view کار کنم الان میخوام از cursor توی view استفاده کنم. ببینید من یک جدول پدر دارم که یه details داره و توی اون یه سری مبالغ برای هر پدر ثبت میشه که بعضی از مبالغ جمع میشن بعضی ها کم میشن، من از رو یه sample اینطوری نوشتم هه اما فکر کنم sample خطا داشته چون داره خطای syntax میده


select
Mon.MFather.MTCID,
cast(

declare @sum bigint,@pay bigint,@natu int

declare cu cursor local fast_forward for
select Mon.MDetails.Pay , Ub.PayrollType.Nature
from Ub.PayrollType INNER JOIN
Mon.MDetails ON Ub.PayrollType.PayrollTypeID = Mon.MDetails.PayrollTypeIDRef
where Mon.MDetails.MTCIDRef=Mon.MFather.MTCID
open cu
fetch next from cu into @pay,@natu
while (@@FETCH_STATUS = 0)
begin
if (@natu<>3)
begin
if (@natu =2)
set @pay=@pay*-1
SET @sum = @sum + @pay
end
fetch next from cu into @pay,@natu
end
close cu
deallocate cu
as bigint)as total

from
Mon.MFather


لطفا راهنماییم کنید ممنون...

nedata
شنبه 15 بهمن 1390, 11:26 صبح
كرسر فوق العاده سرعت را پايين مياره.چرا تريگر را روي جدولتون نمي نويسيد.وقتي روي جدول اعمال بشه روي view هم اگر همان فيلد باشه اعمال مي شه

tiphooo
شنبه 15 بهمن 1390, 11:27 صبح
می شه بگید Mon , Ub چی هستند؟؟
دیتابیسهای جدا هستند؟
یا ورژن جدیدی از SQL است؟
در ضمن همه اینها با یک SELECT قابل انجام است و نه نیاز به VIEW دارد و نه CURSOR
منتها نحوه فراخوانی جداول و فیلدها را من به شخصه اولین باریست که می بینم
چون اگر از DB های مختلف باشند معمولا با دو تا .. نام DB را جدا می کنیم.نه یک . مشکل شما با یک SELECT و گذاشتن دستور CASE قابل حل است.
اگر می فهمیدم UB , MON چی هستند شاید می توانستم کمک کنم

az.heidarzadeh
شنبه 15 بهمن 1390, 11:35 صبح
كرسر فوق العاده سرعت را پايين مياره.چرا تريگر را روي جدولتون نمي نويسيد.وقتي روي جدول اعمال بشه روي view هم اگر همان فيلد باشه اعمال مي شه
من توی جدولم فیلدی ندارم این فیلد بصورت مجازی از مجموع details توی view ایجاد میشه...

nedata
شنبه 15 بهمن 1390, 11:41 صبح
فكر كنم اگه اين فيلد را به جدول پدر اضافه كنيد خيلي كارتون راحت تر بشه

az.heidarzadeh
شنبه 15 بهمن 1390, 13:15 عصر
می شه بگید Mon , Ub چی هستند؟؟

اونا schema جداولم هستند که پیشفرض همه جدول ها dbo است اگه بانک خودتون رو هم ببینید اینو داره و ub و mon رو من برای بعضی از جداول خاصم ایجاد کردم تا گروهبندی باشن... ممنون میشم بگید چطور با select انجام بدم؟...

بهزادصادقی
پنج شنبه 20 بهمن 1390, 01:43 صبح
لطفا ساختار جداول خود را اینجا درج کنید. علاوه بر آن، لطفا توضیح دهید که دقیقا میخواهید چی را چه جوری محاسبه کنید. مرسی.