PDA

View Full Version : گرفتن مقدار برگشتي پارامتر Output در storedprocedure



kohyar
سه شنبه 16 شهریور 1389, 15:19 عصر
سلام دوستان
من يك sp نوشتم كه براي insert كردن اطلاعات در جدول ازش استفاده مي كنم
توي همين sp يك پارامتر از نوع Output گذاشتم كه مي خوام تعداد ركوردهاي فعلي جدول رو نشون بدم


CREATE Procedure sp_tel_Insert
@name nvarchar(50),
@family nvarchar(50),
@sense bit,
@pic varchar(50),
@telnum bigint,
@regday varchar(10),
@reccount int output
As
Begin
Insert Into tel
([name],[family],[sense],[pic],[telnum],[regday])
Values
(@name,@family,@sense,@pic,@telnum,@regday)
set @reccount= (select count([ID]) from tel)
End
GO

حالا مي خوام تو برنامه asp.net تحت سي شارپ بعد از اجراي اين sp مقدار پارامتر خروجي رو بگيرم و به كاربر نشون بدم ولي هميشه صفر رو نشون ميده
توي محيط QueryAnalyzer تست كردن بعد از insert كردن پارامتر خروجي نتيجه درست ميده
كدي كه نوشتم اينه



SqlConnection cnn = new SqlConnection();
cnn.ConnectionString = System.Configuration.ConfigurationManager.AppSetti ngs["connectionstring"].ToString();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "sp_tel_Insert";
cmd.Parameters.Add("@name", SqlDbType.NVarChar, 50);
cmd.Parameters[0].Value = TextBox1.Text;
cmd.Parameters.Add("@family", SqlDbType.NVarChar, 50);
cmd.Parameters[1].Value = TextBox2.Text;
cmd.Parameters.Add("@sense", SqlDbType.Bit);
cmd.Parameters[2].Value = CheckBox1.Checked;
cmd.Parameters.Add("@pic", SqlDbType.VarChar, 50);
cmd.Parameters[3].Value = TextBox4.Text;
cmd.Parameters.Add("@telnum", SqlDbType.BigInt);
cmd.Parameters[4].Value = Convert.ToInt64(TextBox5.Text);
cmd.Parameters.Add("@regday", SqlDbType.VarChar, 10);
cmd.Parameters[5].Value = TextBox6.Text;
SqlParameter recordcount = new SqlParameter("reccount", SqlDbType.Int);
recordcount.Direction = ParameterDirection.Output;
cmd.Parameters.Add(recordcount);
cmd.CommandType = CommandType.StoredProcedure;
cnn.Open();
cmd.ExecuteReader();
Label2.Text = recordcount.Value.ToString();
cnn.Close();


ممنون

hofa_7
سه شنبه 16 شهریور 1389, 17:02 عصر
عمل Insert توی جدول انجام می شه ؟

kohyar
چهارشنبه 17 شهریور 1389, 12:52 عصر
آره دوست عزيز گفتك كه انجام ميشه
حتي تو query Analyzer هم كه پروسيجر رو فراخواني مي كنم مقدار برگشتي درست هستش

Saber_Fatholahi
چهارشنبه 17 شهریور 1389, 13:16 عصر
سلام دوست من
به نظر من ایراد از این خطه

Label2.Text = recordcount.Value.ToString();


درستش اینه دوست من


(int)cmd.Parameters["reccount"]

ASPX
چهارشنبه 17 شهریور 1389, 13:30 عصر
بجاي


cmd.ExecuteReader();

از


cmd.ExecuteNonQuery()

استفاده كن