How to execute a procedure to after bringing values ​into a grid

28 Views Asked by At

I'm trying to execute a procedure on an ASP.NET C# page but it doesn't execute

create or replace procedure pr_check(PAR_DTINIC DATE, PAR_DTFIM  DATE, par_acao   number) as

  TYPE linha_pad IS RECORD(coddocesf  number,
                           filial     varchar2(3),
                           num_nfe    VARCHAR2(10),
                           serie      varchar2(5),
                           fornece    varchar2(150),
                           Emissao    varchar2(20),
                           codtpdoc   varchar2(3),
                           cod_erro   number, 
                           tipo_erro  varchar2(100),
                           texto      varchar2(200),
                           val_errado varchar2(200), 
                           val_certo  varchar2(200)    
                          );

  .....

  TYPE meuArray IS TABLE OF linha_pad index by pls_integer;
  var_tab_notas meuArray;
  VAR_IDX       pls_integer;
  VAR_COUNT     pls_integer;

begin

  VAR_COUNT := 1;
  VAR_IDX   := 1;

  for cnotasSemchaveEsf in (select distinct e.coddoctoesf,
......

and in my code c# it looks like this

  OracleCommand mycom = new OracleCommand();
                mycom.CommandText = "pr_check";
                mycom.Connection = oraCon;
                mycom.CommandType = CommandType.StoredProcedure;

                oraCon.Open();

                mycom.Parameters.Add("PAR_DTINIC", OracleDbType.Date).Direction = ParameterDirection.Output;
                mycom.Parameters.Add("PAR_DTFIM", OracleDbType.Date).Direction = ParameterDirection.Output;
                mycom.Parameters.Add("par_acao", OracleDbType.Int64).Direction = ParameterDirection.Output;

                mycom.ExecuteNonQuery();

                mycom.Parameters["PAR_DTINIC"].Value = DateTime.ParseExact(txtEmisde.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                mycom.Parameters["PAR_DTFIM"].Value = DateTime.ParseExact(txtEmisAte.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                mycom.Parameters["par_acao"].Value = Convert.ToInt64(lsttperro.SelectedValue);


                mycom.Dispose();

                string sqlString = "select distinct to_number(g.filial) filial,\n" +
                "                lpad(g.numnf, 10, 0) numnf,\n" +
                "                g.serie,\n" +
                "                g.fornece,\n" +
                "                g.emissao,\n" +
                "                g.tpdoc,\n" +
                "                g.erro,\n" +
                "                g.val_cor\n" +
                "  from temp_checkesf g";


                dtGeral = objUtil.retornaOracleDataTable(sqlString, oraConString);

                if (dtGeral.Rows.Count > 0)
                {
                    GrdImpNotas.DataSource = dtGeral;
                    GrdImpNotas.DataBind();

But it is not returning anything to the variables sucess or errorMessage. My problem is this stored procedure call passing array. It works fine when executed directly on Oracle.

0

There are 0 best solutions below