0

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
     )

どんな助けや洞察も大歓迎です。

4

1 に答える 1

0

これを試して:

    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;
        }
    }
于 2012-12-12T19:34:18.757 に答える