利用OracleConnection、OracleCommand调用存储过程会出问题,用OleDbConnection、OleDbCommand就可以正常使用,为什么???报的问题是:ORA-02074: 无法在分布式事务处理中SET SAVEPOINT
ORA-06512: 在"BKITS.PROC_SIGNIN", line 13
ORA-06512: 在line 1

解决方案 »

  1.   

    调用方法是:
    OracleConnection cn=new OracleConnection("user id=bkits;data source=mitco;password=bkits");
    OracleCommand cmd=new OracleCommand();
    cmd.Connection=cn;
    cmd.CommandType=CommandType.StoredProcedure;
    cmd.CommandText="BKITS.PROC_SIGNIN";

               
    cmd.Parameters.Add("p_vcYHDM",OracleType.VarChar);
    cmd.Parameters["p_vcYHDM"].Direction=ParameterDirection.Input;
                cmd.Parameters["p_vcYHDM"].Value="123";

    cmd.Parameters.Add("p_vcYHMM",OracleType.VarChar);
    cmd.Parameters["p_vcYHMM"].Direction=ParameterDirection.Input;
    cmd.Parameters["p_vcYHMM"].Value="dbdb";

                cmd.Parameters.Add("p_vcYHMC",OracleType.VarChar,16);
    cmd.Parameters["p_vcYHMC"].Direction=ParameterDirection.Output;
                
    cmd.Parameters.Add("p_vcYHQX",OracleType.VarChar,17);
    cmd.Parameters["p_vcYHQX"].Direction=ParameterDirection.Output;
               
    cmd.Parameters.Add("p_vcYHDW",OracleType.VarChar,10);
    cmd.Parameters["p_vcYHDW"].Direction=ParameterDirection.Output;
               
    cmd.Parameters.Add("p_vcYHZ",OracleType.Int32);
    cmd.Parameters["p_vcYHZ"].Direction=ParameterDirection.Output;
               
    cmd.Parameters.Add("p_vcJGXX",OracleType.VarChar,256);
    cmd.Parameters["p_vcJGXX"].Direction=ParameterDirection.Output;


    try
    {
    // cn.EnlistDistributedTransaction((ITransaction)ContextUtil.Transaction); cn.Open();
    cmd.Prepare();
    cmd.ExecuteNonQuery();
    if(cmd.Parameters[6].Value.ToString()=="")
    {
    textBox1.Text=cmd.Parameters[2].Value.ToString();
    }
    else
    {
    textBox2.Text=cmd.Parameters[6].Value.ToString(); 
    }
    }
    catch(Exception e)
    {
      cn.Close();
                  
                  MessageBox.Show(e.Message.ToString());
    }