C# 调用带参数、返回值的存储过程
存储过程: ALTER PROCEDURE [dbo].[p_translate]
@p_transno VARCHAR(20) ,
@p_usrid varchar(8) ,
@p_return varchar(50) OUTPUT
现需要获取@p_return 值,如何操作?看网上许多的例子,自己调用还是有问题,刚接触C#,也不太会调试,望大神给出详细步骤,最好能像下面的函数一样返回一个数值
public decimal sumCash()
{
decimal sum = 0;
SqlConnection con = Connection.Conn();
try
{
con.Open();
string sql = string.Format("select sum(amount) from trans ");
SqlCommand cmd1 = new SqlCommand(sql, con);
object sum = cmd1.ExecuteScalar();
sum = Convert.ToDecimal(sum);
}
catch (Exception ex)
{
Response.Write("<script language='javascript'>alert('" + ex.Message + "');</script>");
}
return sum;
}
------解决方案--------------------SqlCommand 没有添加参数
http://www.cnblogs.com/VitoriaTang/archive/2006/08/04/467765.html
------解决方案--------------------你可以在把.net中参数的值带到oracle中,用dbms_output.put_line('')一步步输出值,看哪里没有输出,就是哪里有问题了。
------解决方案--------------------
大概是这个意思吧,另外存储过程也可以调试看看。
C# code
public decimal sumCash()
{
decimal sum = 0;
SqlConnection con = Connection.Conn();
try
{
con.Open();
SqlCommand cmd1 = con.CreateCommand();
cmd1.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = new SqlParameter("@p_return", 0);
parameter.Direction = ParameterDirection.Output;
cmd1.Parameters.Add(parameter);
cmd1.ExecuteNonQuery();
sum = Convert.ToDecimal(cmd1.Parameters["@p_return"].Value.ToString());
}
catch (Exception ex)
{
}
return sum;
}