存储过程:  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;
    } 

解决方案 »

  1.   

    SqlCommand 没有添加参数
    http://www.cnblogs.com/VitoriaTang/archive/2006/08/04/467765.html
      

  2.   

    你可以在把.net中参数的值带到oracle中,用dbms_output.put_line('')一步步输出值,看哪里没有输出,就是哪里有问题了。
      

  3.   

    大概是这个意思吧,另外存储过程也可以调试看看。       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;
            }