asp.net 调用oracle存储过程 ,获取返回值
      using (OleDbConnection conn = new OleDbConnection(ConnectionString))
            {
                using (OleDbCommand comm = new OleDbCommand("p_start_compute", conn))
                {
                    comm.CommandType = CommandType.StoredProcedure;
                    comm.Parameters.Add("p_ip", OleDbType.VarChar, 30).Value = userip;                   
                    comm.Parameters.Add("r_jobcode", OleDbType.VarChar, 10).Direction = ParameterDirection.Output;
                    comm.Parameters .Add ("r_code",OleDbType.Integer).Direction = ParameterDirection .ReturnValue;
                    conn.Open();
                    comm.ExecuteNonQuery();
                    if (comm.Parameters["r_code"].Value != null)
                    {
                        Jobcodetext.Text = JobCodeName(comm.Parameters["r_jobcode"].Value.ToString()); 
                        string aaa = Jobcodetext.Text;
                        int cc = aaa.Length;
                       
                     }
            }
       }显示的  Jobcodetext.Text 的内容为: 301  
aaa 的值为 “301”
而 cc 的值 却为  10
不知为何??然后调用  string ee = JobCodeName(aaa);在 vs2005开发环境下  ee 的值 等于  “理论”;
而发布到服务器上去   ee 的值 却是空的!!;
如果 我用  jobcode =  jobcode.Trim().Substring(0,3);  就能获取正常的值  
注: 直接用trim() 是不行的,必须用 substring 取前三位才能得到值
好多地方都有这样的现象 不知道谁能帮我啊!
分数不够可以再加! 急等回复! private string JobCodeName(string jobcode)
    {
        string jobCodetextname;
        switch (jobcode)
        {
            case "301":
                jobCodetextname = "理论";
                break;
            case "302":
                jobCodetextname = "操作";
                break; 
            case "3032":
                jobCodetextname = "不定";
                break; 
        }       
        return jobCodetextname;
    }

解决方案 »

  1.   

    因为数据库中对应字段的长度为10 数据库进行了自动补空格操作
    取得的数据用TrimEnd去一下空格
      

  2.   

    我用了 trim() 也不行啊,,难道必须用 trimend() 才行么??而且 在vs2005 中不用 什么都不用 就可以获得正确结果而在服务器上却不行呢
      

  3.   

    检查一下存储过程对r_jobcode的赋值是不是就是10位长度,或者存在长度不定的情况
    另外你的代码有问题
      

  4.   

    to vivianfdlpw 
    数据库位长不定,设定为 varchar(2)20byte ;从存储过程输出的时候,是三位的;
    另外,代码哪里有问题,请指教!