PDA

View Full Version : سوال: استفاده از stored procedure با پارامتر



MILAD1992
شنبه 05 اردیبهشت 1394, 23:31 عصر
با سلام و عرض ادب
می خواستم از اساتید بپرسم راحت ترین روش برای فراخوانی پارامتر این پروسجور از کنترلر به ویو در mvc چیه؟ (با Entity Framework 6)

CREATE PROCEDURE MyProcedure
@MyParameter INT OUTPUT
AS
BEGIN
SET @MuParameter = (SELECT COUNT(*) FROM MyTable)
END

با تشـکر

HOSSEINONLINE7
یک شنبه 06 اردیبهشت 1394, 23:35 عصر
سلام یکم واضح تر توضیح بدید دقیقا میخواید چکار کنید تا راهنمایی بهتری بتونم بکنم .

اگر میخواید استور پروسیجر را صدا بزنید و پارامتر بهش ارسال کنید از این نمونه کد میشه استفاده کرد که اول نام استور را بهش میدید و بعد پارامتر و در آخر اجرا میکنید و نتیجه هم dataReader.Read() بر میگردونه .


SqlCommand myCmd = new SqlCommand("dbo.Bill_Insert");
try
{
myCmd.CommandType = CommandType.StoredProcedure;
Date_Fa);
myCmd.Parameters.AddWithValue("BillNo", oneObject.BillNo);

IDataReader dataReader = ExecuteReader(myCmd);
while (dataReader.Read())
{

if (dataReader["Msg"] != DBNull.Value)
{
if (result.RecordValid == true)
result.ResultString = "عملیات با موفقیت انجام شد.";

}
}
}

sohil_ww
دوشنبه 07 اردیبهشت 1394, 00:46 صبح
با سلام
راحت ترین کار برای اجرا کردن یک پروسیجر صدا زدن اون به صورت متده مثله این

dbEntities.MyProcedure();

خوب این راحت ترین هست ولی من وقتی به پروسیجر شما نگاه کردم متوجه شدم که پارامتری از نوع خروجی تعریف کردی و من فرض و بر این میزارم که سئوال شما نیازمند این جواب ساده ی من نبود پس اون پاسخ کلیه رو می گم


اول از همه ازت می خوام به پروسیجری که پایین تعریف میکنم نگاه کنی

CREATE PROCEDURE ReturnValue -- Add the parameters for the stored procedure here
@p1 int = 0,
@p2 int = 0 output
AS
BEGIN
SET NOCOUNT ON;
set @p2=@p1;
END
GO

خوب یه پروسیجر با دو متغییر
فکر نکنم این کد نیاز به توضیح داشته باشه
ولی حالا دستیابی به پروسیجر به وسیله entity
using (testEntities obj=new testEntities()) {
ObjectParameter param = new ObjectParameter("p2", typeof(int));
obj.ReturnValue(70, param);
ViewBag.p = param.Value;
}

هماهنطور که تو کد می بینی من امدم شی از کلاس ObjectParameter ساختم که مقدار برگشتی پروسیجر شما در این متغیر و در پراپرتی value ذخیره می شه این کلاس برای پروسیجر های که متغیر بازگشتی دارند استفاده می شه می تونی توضیحات بیشتر رو در msdn مطالعه کنی

موفق باشی

MILAD1992
دوشنبه 07 اردیبهشت 1394, 10:34 صبح
خیلی ممنون sohil-ww
راستش من نحوه فراخوانیم همینطوری بود ولی توی پروسجورم از SET NOCOUNT ON استفاده نمی کردم و جواب نمی گرفتم، یعنی ارور هم نمی داد، جواب هم نمی داد. ولی با اضافه کردن اون درست شد.
واقعاً ممنون، توضیحاتت عـالی بود. زنده باشی