NasimBamdad
چهارشنبه 28 اسفند 1392, 12:16 عصر
سلام و خسته نباشید
یک استور پراسیجر دارم به شکل زیر
USE [Anbar]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Product_Add] (@prod_name nvarchar(50),@code nvarchar(50),@usd_cost bigint,@iqd_cost bigint,@catID int)
AS
BEGIN
SET NOCOUNT ON;
Declare @pid nvarchar(50)
Insert into product(prod_name,code,usd_cost,iqd_cost,catId) VALUES (@prod_name,@code,@usd_cost,@iqd_cost,@catId)
Select @pid = (Select Top 1 code From product Order by id DESC)
return @pid
END
حالا به وسیله کد زیر در C# اجراش می کنم و مقدار متغییر اش رو دریافت می کنم ( pid@ )
SqlConnection cnn = new SqlConnection(db.Cnn);
cnn.Open();
SqlCommand cmd = cnn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Product_Add";
cmd.Parameters.AddWithValue(@"prod_name", radTextBox2.Text);
cmd.Parameters.AddWithValue(@"code", radTextBox1.Text);
cmd.Parameters.AddWithValue(@"usd_cost", radCalculatorDropDown1.Value);
cmd.Parameters.AddWithValue(@"iqd_cost", radCalculatorDropDown2.Value);
cmd.Parameters.AddWithValue(@"catID", comboBox1.SelectedValue);
var returnParameter = cmd.Parameters.Add("@pid", SqlDbType.NVarChar);
returnParameter.Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
PID = Convert.ToString(returnParameter.Value);
cnn.Close();
نوع فیلد که من میخوام مقدارش رو در متغییر pid@ بریزم NvarChar(50) هست . ولی یک اررور میده بهم
میگه نمی تونه مقدار nvarchar رو به int تبدیل کنه .
متن اررور :
Conversion failed when converting the nvarchar value 'moas7' to data type int.
به نظر شما مشکل از کجاست ؟!
یک استور پراسیجر دارم به شکل زیر
USE [Anbar]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Product_Add] (@prod_name nvarchar(50),@code nvarchar(50),@usd_cost bigint,@iqd_cost bigint,@catID int)
AS
BEGIN
SET NOCOUNT ON;
Declare @pid nvarchar(50)
Insert into product(prod_name,code,usd_cost,iqd_cost,catId) VALUES (@prod_name,@code,@usd_cost,@iqd_cost,@catId)
Select @pid = (Select Top 1 code From product Order by id DESC)
return @pid
END
حالا به وسیله کد زیر در C# اجراش می کنم و مقدار متغییر اش رو دریافت می کنم ( pid@ )
SqlConnection cnn = new SqlConnection(db.Cnn);
cnn.Open();
SqlCommand cmd = cnn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Product_Add";
cmd.Parameters.AddWithValue(@"prod_name", radTextBox2.Text);
cmd.Parameters.AddWithValue(@"code", radTextBox1.Text);
cmd.Parameters.AddWithValue(@"usd_cost", radCalculatorDropDown1.Value);
cmd.Parameters.AddWithValue(@"iqd_cost", radCalculatorDropDown2.Value);
cmd.Parameters.AddWithValue(@"catID", comboBox1.SelectedValue);
var returnParameter = cmd.Parameters.Add("@pid", SqlDbType.NVarChar);
returnParameter.Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
PID = Convert.ToString(returnParameter.Value);
cnn.Close();
نوع فیلد که من میخوام مقدارش رو در متغییر pid@ بریزم NvarChar(50) هست . ولی یک اررور میده بهم
میگه نمی تونه مقدار nvarchar رو به int تبدیل کنه .
متن اررور :
Conversion failed when converting the nvarchar value 'moas7' to data type int.
به نظر شما مشکل از کجاست ؟!