代码如下:数据库连接已经成功的,但在执行dacommand.ExecuteNonQuery();  //***报错点***时报错,请各位高手指点一下:
oracleConnection1=new System.Data.OracleClient.OracleConnection();
oracleConnection1.ConnectionString="user id=sb;data source=sbprod;password=sb";
string Procedure="p_wwht_cwfh";
System.Data.OracleClient.OracleCommand dacommand = new System.Data.OracleClient.OracleCommand(Procedure,oracleConnection1);//命令
oracleConnection1.Open();   //成功
dacommand.CommandType=CommandType.StoredProcedure;OracleParameter myParameter = new OracleParameter("type",OracleType.VarChar,4);
myParameter.Direction = ParameterDirection.Input;
myParameter.Value="2";
dacommand.Parameters.Add(myParameter);OracleParameter myParameter2 = new OracleParameter("processNo",OracleType.VarChar,13);
myParameter2.Direction = ParameterDirection.Input;
myParameter2.Value=this.processNo;
dacommand.Parameters.Add(myParameter2);OracleParameter myParameter3 = new OracleParameter("processDesc",OracleType.VarChar,20);
myParameter3.Direction = ParameterDirection.Input;
myParameter3.Value="会计审核取消!";
dacommand.Parameters.Add(myParameter3);dacommand.ExecuteNonQuery();  //***报错点***
oracleConnection1.Close();

解决方案 »

  1.   

    在OracleParameter myParameter = new OracleParameter("type",OracleType.VarChar,4);
    中定义的参数名称,类型,大小必须与oracle的存储过程一致
      

  2.   

    先检查一下你的存储过程是否有问题,为什么问问提 不把报的什么错误告诉大家那???
    给你看个网上写的比较清晰的程序吧   :
    Oracle方面
    1.创建Oracle过程存储
    create or replace procedure proce_test(paramin in varchar2,paramout out varchar2,paraminout in out varchar2)
    as
      varparam varchar2(28);
    begin
      varparam:=paramin;
      paramout:=varparam|| paraminout;  
    end;
    2.测试过程存储
    declare
      param_out varchar2(28);
      param_inout varchar2(28);
    begin
      param_inout:='ff';   
      proce_test('dd',param_out,param_inout);   
      dbms_output.put_line(param_out);
    end;C#方面
    引用Oracle组件 
    using System;
    using System.Data;
    using System.Data.OracleClient;    namespace WebApplication4
    {
         public class OraOprater
         {
             private OracleConnection conn=null;
             private OracleCommand cmd=null;
             public OraOprater()
             {
                  string mConn="data source=ora9i.ora.com;user id=ora;password=ora";  //连接数据库
                  conn=new OracleConnection(mConn);
                  try
                  {
                       conn.Open();
                       cmd=new OracleCommand();
                       cmd.Connection=conn;
                  }
                  catch(Exception e)
                  {
                       throw e;
                  }
             }         public string SpExeFor(string m_A,string m_B)
             {
                    //存储过程的参数声明
                  OracleParameter[] parameters={
                                     new OracleParameter("paramin",OracleType.VarChar,20),
                                    new OracleParameter("paramout",OracleType.VarChar,20),
                                     new OracleParameter("paraminout",OracleType.VarChar,20)
                                                    };
                  parameters[0].Value=m_A;
                  parameters[2].Value=m_B;
                  parameters[0].Direction=ParameterDirection.Input;
                  parameters[1].Direction=ParameterDirection.Output;
                  parameters[2].Direction=ParameterDirection.InputOutput;
                  try
                  {
                       RunProcedure("proce_test",parameters);
                      return parameters[1].Value.ToString();
                  }
                  catch(Exception e)
                  {
                       throw e;
                  }
             }         private void RunProcedure(string storedProcName,OracleParameter[] parameters)
             {
                  cmd.CommandText=storedProcName;//声明存储过程名
                  cmd.CommandType=CommandType.StoredProcedure;
                  foreach(OracleParameter parameter in parameters)
                  {
                       cmd.Parameters.Add(parameter);
                  }
                  cmd.ExecuteNonQuery();//执行存储过程
             }
         }
    }
    测试结果:ddff