PDA

View Full Version : سوال: فرستادن و دریافت متغیر از نوع output در stored procedure



veniz2008
چهارشنبه 13 مهر 1390, 12:16 عصر
سلام،من جدیدا" کار با stored procedure رو شروع کردم،یه سوال داشتم،یک جدول دارم که فیلد userid رو به عنوان کلید قرار دادم،حالا یه sp ساده واسه عمل insert نوشتم که میخوام قبل از درج رکورد جدید،اول چک کنه که آیا این userid قبلا ثبت شده یا نه،واسه همین یه متغیر صحیح به نام @result و از نوع output تعریف کردم،حالا مشکلم اینه که نمیدونم با چه کدی مقدار این متغیر رو واسه #C بفرستم وهمچنین در محیط #C با چه کدی این مقدار رو بگیرم،(مقدار 1 برای وجود داشتن رکورد و مقدار 0 برای وجود نداشتن رکورد در نظر گرفتم)،من کد sp خودم رو میذارم ممنون میشم راهنمایی کنید،تشکر.

create proc adduser
@userid int,
@name nvarchar(50),
@family nvarchar(50),
@result int output
as
if(EXISTS(select * from users where userid=@userid))
set @result=1
else
begin
set @result=0
insert into users(userid,name,family)values(@userid,@name,@fam ily)
end
go

sempay_ninjutsu
چهارشنبه 13 مهر 1390, 13:37 عصر
با سلام
دوست عزیز سری به لینک زیر بزن مشکلت حل میشه
موفق باشید
http://barnamenevis.org/showthread.php?232862-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-store-procedure

veniz2008
چهارشنبه 13 مهر 1390, 17:01 عصر
با سلام
دوست عزیز سری به لینک زیر بزن مشکلت حل میشه
موفق باشید
http://barnamenevis.org/showthread.php?232862-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-store-procedure
مشکلم حل نشد،آیا sp من درسته و مشکلی نداره؟،اگه درسته با چه کدی در محیط #C،مقدار این متغیر خروجی(0 یا 1) رو باید بدست بیارم،مشکل من همینه،دوستان لطفا راهنمایی کنید.

veniz2008
چهارشنبه 13 مهر 1390, 23:33 عصر
کسی نیست که مشکل ما رو حل کنه؟؟،:گریه::گریه:

veniz2008
پنج شنبه 14 مهر 1390, 16:14 عصر
واقعا کسی نیست که با stored procedure کار کرده باشی؟،فکر نمیکنم سوال پیچیده ای باشه.لطفا راهنمایی کنید.

spring69
پنج شنبه 14 مهر 1390, 19:32 عصر
سلام.
var cnn = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=JainsDB;Integrated Security=True");
var cmd = new SqlCommand("adduser", cnn) { CommandType = System.Data.CommandType.StoredProcedure };
cmd.Parameters.AddWithValue("@userid", "123");
cmd.Parameters.AddWithValue("@name", "ali");
cmd.Parameters.AddWithValue("@family", "mohammadi");
// add output parameter
var par = new SqlParameter("@result", System.Data.SqlDbType.Int, 50) { Direction = System.Data.ParameterDirection.Output };
cmd.Parameters.Add(par);
//////////////////////////////////////////////////////////////////////
cnn.Open();
cmd.ExecuteNonQuery();
cnn.Close();
//read parameter value after execute proc
MessageBox.Show(par.Value.ToString());