解决方案 »

  1.   

    出错:
    [System.Data.OracleClient.OracleException] = {"ORA-01036: 非法的变量名/编号\n"}
      

  2.   

    1、Oracle的更新不能出现Parameters顺序跟传来的参数顺序不一致的情形。2、字段名太长,有的地方说是要小于32个字符,但我使用,它还要比32小,大家只能尽量控制字段名的长度。3、虽然在Sql 语句中使用 冒号“:”代表参数,但在创建OracleParameter时,指定的参数名称不能使用冒号,在new OracleParameter时,ParameterName只能使用参数的字符部分 。
      

  3.   

    OracleConnection DBCon = new OracleConnection(DBCONNStr);
      try
      {
      OracleCommand DBCmd = new OracleCommand("PDICT_TABLETYPE", DBCon);
      DBCmd.Parameters.Add(new OracleParameter(":iOperateType", OracleType.Number)).Value = Int32.Parse(iOperateType.ToString()); //1添加2修改3删除
      OracleParameter pTypeID = new OracleParameter(":v_iTypeId", OracleType.Number);
      pTypeID.Direction = ParameterDirection.InputOutput;
      pTypeID.Value = Int32.Parse(v_iTypeId.ToString());
      DBCmd.Parameters.Add(pTypeID);
      //DBCmd.Parameters.Add(new OracleParameter(":V_ITYPEID", OracleType.Number)).Value = 1;
      DBCmd.Parameters.Add(new OracleParameter(":v_sTypeName", OracleType.VarChar)).Value = v_sTypeName;
      if (DBCon.State == ConnectionState.Closed) DBCon.Open();
      DBCmd.ExecuteNonQuery();
      return true;
      }
      catch (Exception Ex)
      {
      //return false;
      throw Ex;
      }
      finally
      {
      DBCon.Close();
      }
      

  4.   

    C#调用Oracle存储过程的方法  
    create or replace procedure proc2
    (
    v_id number,
    v_name varchar2
    )
    is
    begin
    insert into test(id,name) values(v_id,v_name);
    commit;
    end;  OracleConnection conn = new OracleConnection("server=cw;uid=ls0019999;pwd=aaaaaa");
                conn.Open();
                OracleCommand cmd = conn.CreateCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "proc2";
                cmd.Parameters.Add("v_id", OracleType.Number).Direction = ParameterDirection.Input;//指明传入的参数是输入给oracle存储过程用的
                cmd.Parameters["v_id"].Value =this.textBox1.Text.Trim();
                cmd.Parameters.Add("v_name",OracleType.NVarChar).Direction = ParameterDirection.Input;//指明传入的参数是输入给oracle存储过程用的
                cmd.Parameters["v_name"].Value =this.textBox2.Text.Trim();
                cmd.ExecuteNonQuery();
                conn.Close(); 
      

  5.   

    问题已解决:请参考:
    http://forum.csdn.net/PointForum/Manage/TopicManageView.aspx?forumID=302d294a-bb4e-4673-b749-19b8f5e62a07&topicID=85edf293-d263-4b2f-a858-61b7fe683afa&date=2011-12-29+15%3a55%3a08&v=13分共享了!