PDA

View Full Version : استفاده از برونداد يك پروسيجر



xvision
سه شنبه 12 آذر 1387, 04:44 صبح
من يك SP دارم كه در اون چيزي چك ميشه و اگر وجود داشت يا نداشت ( به تناسب ) كاري انجام ميشه مثلا ركورد هايي ثبت ميشن و در ادامه پيغامي هم نمايش داده ميشه (به ازاي هر شرط يك پيغام دارم يعني اگه مثبت بود يك پيغام و اگر شرط منفي بود يه پيغام ديگه )
كه البته از print استفاده كردم
وقتي اون رو توي برنامه ام صدا ميكنم همه چيز درست انجام ميشه جز اينكه نمي دونم چطوري بايد اون پيغام رو هم نمايش بدم
اميدوارم تونسته باشم مشكلم رو درست منتقل كنم

علیرضا مداح
سه شنبه 12 آذر 1387, 08:49 صبح
سلام دوست عزیز،
شما باید در SP مورد نظر ، یک پارامتر OUTPUT تعریف کنید و در هر مرحله آن را برابر با پیغام خطا قرار دهید، سپس میتوانید مقدار پارامتر OUTPUT را در برنامه خود بدست بیاورید ،
یک نمونه :
Knowledge Base : Using Output Parameters in Stored Procedures (http://dotnetgems.blogspot.com/2007/10/using-output-parameters-in-stored.html)

xvision
سه شنبه 12 آذر 1387, 12:19 عصر
ممنون از راهنماييتون
اگر ممكنه يه نمونه كد ديگه هم برام بگذاريد

اول اينكه متاسفانه نمونه اي كه آدرس دادين C# نيست
دوم من مي خوام نتيجه OUTPUT توي يكMessageBox ديده بشه
اگر يك نمونه به اين شكل بتونيد براي من بنويسيد ممنون ميشم

xvision
سه شنبه 12 آذر 1387, 18:52 عصر
دوستان يه نگاهي به اين كد بندازن
در محيط SQLserver مشكلي نداره ولي وقتي تو برنامه صداش ميزنم اول گير ميده كه بايد مقدار پارامتر رو هم مشخص كنم و در نهايت با دادن يك مقدار بهش هم جواب نمي ده !



ALTER Procedure [dbo].[sp_sick_special]
@sick_ssn nvarchar(25),
@sick_Fname nvarchar(50),
@sick_Lname nvarchar(50),
@sick_tell nvarchar(15),
@time_date nvarchar(20),
@time_time nvarchar(5),
@natije nvarchar(max) output
As
BEGIN
IF EXISTS
(
Select *
From sick
Where
time_date = @time_date
and time_time = @time_time
)

SET @natije =' دراين تاريخ و ساعت نمي توانيد فرد ديگري را ثبت كنيد'
ELSE

Insert Into sick
(sick_ssn,sick_Fname,sick_Lname,sick_tell,time_dat e,time_time)
Values
(@sick_ssn,@sick_Fname,@sick_Lname,@sick_tell,@tim e_date,@time_time)

SET @natije = 'ثبت با موفقيت انجام گرديد'
End

علیرضا مداح
سه شنبه 12 آذر 1387, 20:10 عصر
شما باید پروپرتی Direction مربوط به شیء از نوع SqlParameter را بر روی ParameterDirection.Output قرار داده و پس از اجرای SqlCommand، مقدار آن را توسط پروپرتی Value مربوط به آن بدست بیاورید ،/

xvision
سه شنبه 12 آذر 1387, 23:37 عصر
شما باید پروپرتی Direction مربوط به شیء از نوع SqlParameter را بر روی ParameterDirection.Output قرار داده و پس از اجرای SqlCommand، مقدار آن را توسط پروپرتی Value مربوط به آن بدست بیاورید ،/

دوست عزيز اگه براتون ممكنه 2 خط كد براي SP من بنويسيد من متوجه بشم :متفکر:
ببينيد من تا اينجا رو هم نوشتم ولي موقع فراخوان SP از من يه چيزي مثل " out string natije " مي خواد كه نمي فهمم چيه !


_natije.Direction = ParameterDirection.Output;
natije = ((string)(_natije.Value));