PDA

View Full Version : سوال: مقدار برگشتی از اجرای یک پروسیجر SQL



علیرضا حسن زاده
شنبه 03 مهر 1389, 08:34 صبح
سلام
یک پروسیجر به صورت زیر تو SQL تعریف کردم
(
@Refrence nvarchar(50),
@Titel nvarchar(50),
@Tarikh bigint
)
AS
BEGIN
INSERT INTO [dbo].[ABC] ([Refrence],[Titel],[Tarikh])
VALUES (@Refrence,@Titel,@Tarikh)
return @@identity
END
همون طور که می بیند مقدار ID جدید که وارد این جدول میشه رو برگشت میده
تو اجرا توسط خود استذیو SQL مقدار بزگشتی رو درست نشون میده

الان می خوام از این مقدار برگشتی تو #C استفاده کنم البته بدون Reader
از تابع ExecuteNonQuery هم که استفاده می کنم مقدار برگشتی اون نتیجه اجرای دستور SQL هست نه مقداری که من می خوام
وقتی هم که می خوام یه پارامتر به عنوان مقدار برگشتی تو پارامترهای Command تعریف کنم نمی دونم اسمش رو چی بنویسم و چه جوری بعد از اجرای دستور اون رو بخونم؟

alen332
شنبه 03 مهر 1389, 09:45 صبح
سلام دوست من :

من يك تاپيك مثال ايجاد كردم در اين برنامه من فرم ورود به برنامه به عنوان(Pass1) رو با روش ارسال پارامتر و فراخواني آرگومان در محيط SQLServer2008 قرار دادم دقيقا جواب همه سوالات شما در اين مثال خصوصا در بانك اطلاعاتي هست دانلود بكن و اگه دوست داشتي كامل بكن و يا تشكر(سوالي بودن در خدمتم) ... ذكات يادگيري علم ياد دادن است. يا علي

http://barnamenevis.org/forum/showthread.php?t=247523

علیرضا حسن زاده
شنبه 03 مهر 1389, 11:39 صبح
دوست عزیز فکر کنم شما سوال بنده رو متوجه نشدی من مشکلی با ارسال آرگومان یا فراخوانی پروسیجر یا تابع در SQL توسط #C ندارم من می خوام اون مقداری رو که تو قسمت Return نوشتم بدون DataReader و فقط با همون ExecuteNonQuery بخونم

alen332
شنبه 03 مهر 1389, 14:08 عصر
من تا حالا بدون READER فراخواني نكردم ولي كد فراخواني پروسيجر اينه اميدوارم تونسته باشم راهنمايي كرده باشم چه مشكلي داره از READER استفاده كني؟


SqlCommand cmd = new SqlCommand();
cmd.Connection = objConnection;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "reptq3";
SqlParameterCollection sqlParams = cmd.Parameters;
sqlParams.AddWithValue("@UserName", _username);
sqlParams.AddWithValue("@Password", _password);

Encomp_Amini
شنبه 03 مهر 1389, 14:24 عصر
سلام
ابتدا StoredProcedure خود را به صورت زیر تغییر دهید:


(
@ParameterRETURN int OUTPUT,
@Refrence nvarchar(50),
@Titel nvarchar(50),
@Tarikh bigint
)

AS
BEGIN
INSERT INTO [ABC] (Refrence,Titel,Tarikh)
VALUES (@Refrence,@Titel,@Tarikh)
set @ParameterRETURN = scope_identity()
END

البته با توجه به پارامتر خروجی تان نام و نوع آنرا تغییر دهید.
سپس در برنامه تان دستورات زیر را اضافه نمایید:


int ParameterRETURN;
cmd.Parameters.AddWithValue(@"ParameterRETURN;", 0);
cmd.Parameters[@"ParameterRETURN"].Direction=ParameterDirection.Output;
cmd.ExecuteNonQuery();
ParameterRETURN=cmd.Parameters[@"ParameterRETURN;"].Value;

M.YasPro
شنبه 03 مهر 1389, 15:04 عصر
در تکمیل توضیح دوست خوبم
به جای :


cmd.Parameters[@"ParameterRETURN"].Direction=ParameterDirection.Output;

از


cmd.Parameters[@"ParameterRETURN"].Direction=ParameterDirection.ReturnValue;

استفاده کنید.خود msdn هم اینو پیشنهاد کرده .
موفق باشید .

st6870
یک شنبه 13 مرداد 1392, 15:12 عصر
سلام دوست من :

من يك تاپيك مثال ايجاد كردم در اين برنامه من فرم ورود به برنامه به عنوان(Pass1) رو با روش ارسال پارامتر و فراخواني آرگومان در محيط SQLServer2008 قرار دادم دقيقا جواب همه سوالات شما در اين مثال خصوصا در بانك اطلاعاتي هست دانلود بكن و اگه دوست داشتي كامل بكن و يا تشكر(سوالي بودن در خدمتم) ... ذكات يادگيري علم ياد دادن است. يا علي

http://barnamenevis.org/forum/showthread.php?t=247523

واقعا ایول خیلی از جمله آخرت خوشم اومد

soheila_1643
سه شنبه 05 مرداد 1395, 00:15 صبح
با سلام. نمیدونستم چطور یه تاپیک درست کنم واسه همین سوالمو اینجا مطرح میکنم.
من یه پروسیجر دارم که چند تا select داره توش. ولی میخوام وقتی از برنامه اجراش کنم نتیجه سلکت آخری رو نشون بده درحالیکه که داره اولیو نشون میده.
کسی میتونه کمکم کنه؟

Mahmoud.Afrad
سه شنبه 05 مرداد 1395, 03:01 صبح
با سلام. نمیدونستم چطور یه تاپیک درست کنم واسه همین سوالمو اینجا مطرح میکنم.
من یه پروسیجر دارم که چند تا select داره توش. ولی میخوام وقتی از برنامه اجراش کنم نتیجه سلکت آخری رو نشون بده درحالیکه که داره اولیو نشون میده.
کسی میتونه کمکم کنه؟

اسکریپت پروسیجر را قرار بدید.