读书人

C# 调用带参数、返回值的存储过程解决

发布时间: 2012-09-15 19:09:28 作者: rapoo

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;        } 

读书人网 >C#

热点推荐