View Full Version : سوال: اجرای پروسیجر به ازای هر رکورد
mrsalam
دوشنبه 11 مرداد 1389, 13:31 عصر
سلام به گلستان برنامه نویس ،
چطوری می تونم کوری بنویسم که پروسیجری را به تعداد رکوردهای جدول اجرا کن و آن پروسیجر هر بار با مقادیر رکورد جاری مقدار دهی شود ؟
پیشاپیش متشکرم
ahmad_eagle2002
دوشنبه 11 مرداد 1389, 14:11 عصر
در join از cross apply استفاده کنید
بدین صورت
select * from table_name
cross apply procedure_name
که به ازای هر رکورد procedure اجرا میشود
mrsalam
دوشنبه 11 مرداد 1389, 14:24 عصر
متشکرم
کجا باید از join استفاده کنم؟
تو این مثالتون که join استفاده نکردین!
ممکنه توضیح بدین؟
مثلا پروسیجرم به این شکله:
Exec SP_RankCustomer @CustomerID=CustomerID
ahmad_eagle2002
دوشنبه 11 مرداد 1389, 14:57 عصر
دوست عزیز
عذر می خواهم ، جای stored procedure باید sub query قرار بدهی تا کد بالا کار کند
در ضمن اگر حتما میخواهی از stored procedure استفاده کنی میتونی از cursor هم استفاده کنی
ASKaffash
سه شنبه 12 مرداد 1389, 08:06 صبح
متشکرم
کجا باید از join استفاده کنم؟
تو این مثالتون که join استفاده نکردین!
ممکنه توضیح بدین؟
مثلا پروسیجرم به این شکله:
Exec SP_RankCustomer @CustomerID=CustomerID
سلام
یک حلقه تکرار درست کنید دستور فوق را تکرار کند برای ایجاد حلقه با متغیر CustomerID می توانید از کرسر نیز استفاده کنید
محمد سلیم آبادی
سه شنبه 12 مرداد 1389, 12:05 عصر
سلام به گلستان برنامه نویس ،
چطوری می تونم کوری بنویسم که پروسیجری را به تعداد رکوردهای جدول اجرا کن و آن پروسیجر هر بار با مقادیر رکورد جاری مقدار دهی شود ؟
پیشاپیش متشکرم
خیلی ساده بطور پویا دستورات execute را تولید کنید و سپس اجراشون کنید. یعنی:
declare @sql nvarchar(max);
set @sql=''
select @sql=@sql+' EXECUTE your_sp '''+ your_column + ''''
from table_name
execute (@SQL);
mrsalam
سه شنبه 12 مرداد 1389, 14:44 عصر
از همه متشکرم اگه میشه یک مثال از Cursor بزنید
ASKaffash
سه شنبه 12 مرداد 1389, 15:57 عصر
سلام
اینهم مثال خودتان :
Declare @CID Bigint
Declare TmpCursor Cursor For
Select CID From Customer
Open TmPCursor
While 1=1 Begin
Fetch Next From TmpCursor Into @CID
If @@Fetch_Status<>0 Break
Exec SP_RankCustomer @CustomerID=CustomerID
End
Close TmpCursor
Deallocate TmpCursor
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.