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