[英]Oracle Stored Procedure not executing in .NET?
我在使用Oracle和.NET时遇到了一个非常罕见的问题,我可以通过一个简单的选择来检索可以正常工作的产品列表。 但是随后,对于存储过程,它似乎没有执行它,但是却没有说明任何错误或缺少参数。 在SQL Developer中运行时,它可以正常工作。
OracleCommand ora_cmd = new OracleCommand("a6r1.PR_ABC_P_ALTA_TARJETA_PAYWARE", ora_conn);
ora_cmd.BindByName = true;
ora_cmd.CommandType = CommandType.StoredProcedure;
int exito = 0;
ora_cmd.Parameters.Add("Lc_Param_Issuer", OracleDbType.Varchar2, issuer, ParameterDirection.Input);
ora_cmd.Parameters.Add("Ln_Param_Valid_Product", OracleDbType.Varchar2, DropDownListProducto.SelectedValue.ToString(), ParameterDirection.Input);
ora_cmd.Parameters.Add("Ln_Param_Total", OracleDbType.Int32, Convert.ToInt32(TextBoxCantidad.Text) , ParameterDirection.Input);
ora_cmd.Parameters.Add("Lc_Param_User", OracleDbType.Varchar2, user, ParameterDirection.Input);
ora_cmd.Parameters.Add("Lc_Encrypted_Password", OracleDbType.Varchar2, pass, ParameterDirection.Input);
ora_cmd.Parameters.Add("Lc_Exito", OracleDbType.Int32, exito, ParameterDirection.Output);
/*********************Oracle Command**********************************************************************/
ora_cmd.ExecuteNonQuery();
SP太大,无法在此处放置,因此我只会添加标题。
PROCEDURE PR_ABC_P_ALTA_TARJETA_PAYWARE (
Lc_Param_Issuer In Varchar2,
Ln_Param_Valid_Product In Varchar2,
Ln_Param_Total In Number,
Lc_Param_User In Varchar2,
Lc_Encrypted_Password In Varchar2,
Lc_Exito Out Number
)
任何帮助或见解表示赞赏。
尝试这个:
using Oracle.DataAccess;
using Oracle.DataAccess.Client;
public DataTable ExecuteSP()
{
using (OracleConnection cn = new OracleConnection(GetConnectionString()))
{
OracleDataAdapter da = new OracleDataAdapter();
OracleCommand cmd = new OracleCommand();
cmd.Connection = cn;
cmd.CommandText = "PR_ABC_P_ALTA_TARJETA_PAYWARE";
cmd.CommandType = CommandType.StoredProcedure;
cmd.BindByName = true;
cmd.Parameters.Add("Lc_Param_Issuer", OracleDbType.Varchar2, issuer, ParameterDirection.Input);
cmd.Parameters.Add("Ln_Param_Valid_Product", OracleDbType.Varchar2, DropDownListProducto.SelectedValue.ToString(), ParameterDirection.Input);
cmd.Parameters.Add("Ln_Param_Total", OracleDbType.Int32, Convert.ToInt32(TextBoxCantidad.Text) , ParameterDirection.Input);
cmd.Parameters.Add("Lc_Param_User", OracleDbType.Varchar2, user, ParameterDirection.Input);
cmd.Parameters.Add("Lc_Encrypted_Password", OracleDbType.Varchar2, pass, ParameterDirection.Input);
cmd.Parameters.Add("Lc_Exito", OracleDbType.Int32, exito, ParameterDirection.Output);
cmd.Parameters.Add("T_CURSOR", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.