我想从存储过程
创建c#helper存储过程代码结束。
当我运行代码时,我有错误程序或函数有太多的参数说明
public int xda_sp_GetTagWithComponent(string ComponentNo)
{
SqlConnection conn = new SqlConnection(string.Format("Data Source={0};Password={1};User ID={2};Initial Catalog={3};Connection Timeout={4}", DataSource, Password, UserID, InitialCatalog, ConnTimeOut));
int ReturnResult;
try
{
conn.Open();
// 1. SP name
SqlCommand cmd = new SqlCommand("xda_sp_GetTagWithComponent", conn);
// 2. to execute a stored procedure
cmd.CommandType = CommandType.StoredProcedure;
// 3. add parameter
cmd.Parameters.Add("@ComponentSerialNo", SqlDbType.VarChar, 16).Direction = ParameterDirection.Input;
cmd.Parameters["@ComponentSerialNo"].Value = ComponentNo;
cmd.Parameters.Add("@SerialNo", SqlDbType.VarChar, 16).Direction = ParameterDirection.Output;
cmd.Parameters["@SerialNo"].Value = "";
cmd.Parameters.Add("@returnResult", SqlDbType.Int, 100).Direction = ParameterDirection.Output;
//4. Execute
cmd.ExecuteNonQuery();
//5. Get Result
ReturnResult = Convert.ToInt32(cmd.Parameters["@returnResult"].Value);
}
catch
{
ReturnResult = 0;
}
finally
{
// Close the connection
if (conn != null)
{
conn.Close();
}
}
return ReturnResult;
}
答案 0 :(得分:0)
您将最后一个参数设置为ParameterDirection.Output
,但这意味着您的存储过程需要在传入参数列表中将其声明为OUTPUT。像这样的东西
CREATE PROCEDURE xda_sp_GetTagWithComponent
@ComponenSerialNo varchar(16),
@SerialNo varchar (16),
@returnResult INT OUT
AS
.....
但是,如果您只有前两个参数,并且给定名称,您希望在存储过程中为@returnResult分配RETURN语句的值,那么您应该将其声明为
cmd.Parameters.Add("@returnResult", SqlDbType.Int).Direction =
ParameterDirection.ReturnValue;
答案 1 :(得分:0)
cmd.Parameters.Add("@SerialNo", SqlDbType.VarChar, 16).Direction = ParameterDirection.Output;
cmd.Parameters["@SerialNo"].Value = "";
改为使用
cmd.Parameters.Add("@SerialNo", SqlDbType.VarChar, 16).Direction = ParameterDirection.InputOutput;
cmd.Parameters["@SerialNo"].Value = "";