Ajuda - Procedure -

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Pessoal
Alguém pode me ajudar a identificar o porque não estou conseguindo gerar o arquivo.Aparece os seguintes erros:

Selecionar tudo

ORA-00979 - not a group by expression
ORA-06512 - at "Finempdbs_hmg_prc_emprestimo_gf" line 21
ORA-06512 - at line 3
Procedure :

Selecionar tudo

CREATE OR REPLACE PROCEDURE prc_emprestimo_gf (
   prc_con_num_est      OUT   NUMBER,
   prc_data             out   NUMBER, 
   prc_principal_pago   OUT   NUMBER, 
   prc_juros_pago       OUT   NUMBER, 
   prc_mora_paga        OUT   NUMBER, 
   prc_iof_pago         OUT   NUMBER, 
   prc_multa_paga       OUT   NUMBER 
) 
IS 
   v_con_num_est      NUMBER (14, 4);
   v_data             NUMBER (8); 
   v_principal_pago   NUMBER (14, 4); 
   v_juros_pago       NUMBER (14, 4); 
   v_mora_paga        NUMBER (14, 4); 
   v_iof_pago         NUMBER (14, 4); 
   v_multa_paga       NUMBER (14, 4); 
   v_linha            VARCHAR2 (2000)    := ''; 
   v_arquivo          UTL_FILE.file_type; 
BEGIN 
   SELECT   c.con_num_est, 
            TO_CHAR (t.pgt_dat, 'yyyymmdd'), 
            SUM (t.ppcvalpriantpgt - t.ppcvalpripospgt), 
            SUM (t.ppcvaljurantpgt - t.ppcvaljurpospgt), 
            SUM (t.ppcvalmorantpgt - t.ppcvalmorpospgt), 
            SUM (t.ppcvaliofantpgt - t.ppcvaliofpospgt), 
      SUM (t.ppcvalmulantpgt - t.ppcvalmulpospgt) 
       INTO v_con_num_est, 
      v_data,
      v_principal_pago, 
            v_juros_pago, 
            v_mora_paga, 
            v_iof_pago, 
            v_multa_paga            
       from   emptblppc t, tb_con c, tb_pgt p 
      WHERE t.con_num = c.con_num 
        AND t.ppcdthalt = c.con_dat_alt 
        AND t.con_num = p.con_num 
        AND t.ppcdthalt = p.pgt_dat_alt 
        AND t.pgt_dat = p.pgt_dat 
        AND t.ppcdthalt = '01 jan 1960' 
        AND TO_CHAR (p.DATA, 'DD-MM-YYYY') = '23-12-2007' 
   GROUP BY c.con_num_est, TO_DATE (t.pgt_dat, 'DD-MM-YYYY'); 

   v_arquivo := UTL_FILE.fopen ('/backup/CPMF', 'EMPRESTIMO_GF.CSV', 'W'); 
   UTL_FILE.put_line (v_arquivo, 'v_con_num_est    : '||NVL (v_con_num_est, 0));
   UTL_FILE.put_line (v_arquivo, 'v_data     : '||NVL (v_data, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_principal_pago : '||NVL (v_principal_pago, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_juros_pago     : '||NVL (v_juros_pago, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_mora_paga      : '||NVL (v_mora_paga, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_iof_pago       : '||NVL (v_iof_pago, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_multa_paga     : '||NVL (v_multa_paga, 0)); 
   UTL_FILE.fclose (v_arquivo); 
END;
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Olá amigo, beleza?

esse erro é por causa do campo que você informa no select.
nos itens resultantes do select você informa o seguinte

Selecionar tudo

TO_CHAR (t.pgt_dat, 'yyyymmdd')
, porem no group by você agrupa por

Selecionar tudo

TO_DATE (t.pgt_dat, 'DD-MM-YYYY')
, nesse caso você tem q deixar os campos identicos..

[]'s
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Agora surgiu outro erro :

Selecionar tudo

ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'PRC_EMPRESTIMO_GF'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored 
O que pode ser?
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Esse erro aparece pois você não está informando corretamente e quantidade de parâmetros pra sua procedure, como sua procedure só tem parametros de saida você tem que criar as variaveis que serão utilizadas por ela. Por exemplo:

Selecionar tudo

DECLARE
   v_con_num_est      NUMBER (14, 4);
   v_data             NUMBER (14, 4);
   v_principal_pago   NUMBER (14, 4);
   v_juros_pago       NUMBER (14, 4);
   v_mora_paga        NUMBER (14, 4);
   v_iof_pago         NUMBER (14, 4);
   v_multa_paga       NUMBER (14, 4);
BEGIN
   prc_emprestimo_gf (prc_con_num_est         => v_con_num_est,
                      prc_data                => v_data,
                      prc_principal_pago      => v_principal_pago,
                      prc_juros_pago          => v_juros_pago,
                      prc_mora_paga           => v_mora_paga,
                      prc_iof_pago            => v_iof_pago,
                      prc_multa_paga          => v_multa_paga
                     );
END;
[]'s
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Cristiano..tens como aplicar isso no código para mim?
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Esse código que eu passei acima é a "chamada" que você poderá utilizar pra rodar a sua procedure. Dessa forma os valores estarão disponíveis em cada variavel que foi utilizada..

[]'s!!
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Não funcioinou....Aparece as mesmas mensagens
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Posta aqui pra gente, o trecho do teu código, onde você chama a procedure, tem como?
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Selecionar tudo

CREATE OR REPLACE PROCEDURE prc_emprestimo_gf (
   prc_con_num_est      OUT   NUMBER,
   prc_data             out   NUMBER, 
   prc_principal_pago   OUT   NUMBER, 
   prc_juros_pago       OUT   NUMBER, 
   prc_mora_paga        OUT   NUMBER, 
   prc_iof_pago         OUT   NUMBER, 
   prc_multa_paga       OUT   NUMBER 
) 
IS 
   v_con_num_est      NUMBER (14, 4);
   v_data             NUMBER (8); 
   v_principal_pago   NUMBER (14, 4); 
   v_juros_pago       NUMBER (14, 4); 
   v_mora_paga        NUMBER (14, 4); 
   v_iof_pago         NUMBER (14, 4); 
   v_multa_paga       NUMBER (14, 4); 
   v_linha            VARCHAR2 (2000)    := ''; 
   v_arquivo          UTL_FILE.file_type; 
BEGIN 
   SELECT   c.con_num_est, 
            TO_CHAR (t.pgt_dat, 'dd/mm/yyyy'), 
            SUM (t.ppcvalpriantpgt - t.ppcvalpripospgt), 
            SUM (t.ppcvaljurantpgt - t.ppcvaljurpospgt), 
            SUM (t.ppcvalmorantpgt - t.ppcvalmorpospgt), 
            SUM (t.ppcvaliofantpgt - t.ppcvaliofpospgt), 
      SUM (t.ppcvalmulantpgt - t.ppcvalmulpospgt) 
       INTO v_con_num_est, 
      v_data,
      v_principal_pago, 
            v_juros_pago, 
            v_mora_paga, 
            v_iof_pago, 
            v_multa_paga            
       from   emptblppc t, tb_con c, tb_pgt p 
      WHERE t.con_num = c.con_num 
        AND t.ppcdthalt = c.con_dat_alt 
        AND t.con_num = p.con_num 
        AND t.ppcdthalt = p.pgt_dat_alt 
        AND t.pgt_dat = p.pgt_dat 
        AND t.ppcdthalt = '01 jan 1960' 
        AND TO_CHAR (p.DATA, 'DD-MM-YYYY') = '23-12-2007' 
   GROUP BY c.con_num_est, TO_DATE (t.pgt_dat, 'dd/mm/yyyy'); 

   v_arquivo := UTL_FILE.fopen ('/backup/CPMF', 'EMPRESTIMO_GF.CSV', 'W'); 
   UTL_FILE.put_line (v_arquivo, 'v_con_num_est    : '||NVL (v_con_num_est, 0));
   UTL_FILE.put_line (v_arquivo, 'v_data           : '||NVL (v_data, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_principal_pago : '||NVL (v_principal_pago, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_juros_pago     : '||NVL (v_juros_pago, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_mora_paga      : '||NVL (v_mora_paga, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_iof_pago       : '||NVL (v_iof_pago, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_multa_paga     : '||NVL (v_multa_paga, 0)); 
   UTL_FILE.fclose (v_arquivo); 
END;
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Erro que aparece no sqlplus:

Selecionar tudo

ERRO na linha 1:
ORA-06550: line 1, column 7:
PLS-00905: object FINEMPDBS.PRC_EMPRESTIMO_GF is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Código

Selecionar tudo

CREATE OR REPLACE PROCEDURE prc_emprestimo_gf (
   prc_con_num_est      OUT   NUMBER,
   prc_data             out   NUMBER, 
   prc_principal_pago   OUT   NUMBER, 
   prc_juros_pago       OUT   NUMBER, 
   prc_mora_paga        OUT   NUMBER, 
   prc_iof_pago         OUT   NUMBER, 
   prc_multa_paga       OUT   NUMBER 
) 
IS 
   v_con_num_est      NUMBER (14, 4);
   v_data             NUMBER (8); 
   v_principal_pago   NUMBER (14, 4); 
   v_juros_pago       NUMBER (14, 4); 
   v_mora_paga        NUMBER (14, 4); 
   v_iof_pago         NUMBER (14, 4); 
   v_multa_paga       NUMBER (14, 4); 
   v_linha            VARCHAR2 (2000)    := ''; 
   v_arquivo          UTL_FILE.file_type; 
BEGIN 
   SELECT   c.con_num_est, 
            TO_CHAR (t.pgt_dat, 'dd/mm/yyyy'), 
            SUM (t.ppcvalpriantpgt - t.ppcvalpripospgt), 
            SUM (t.ppcvaljurantpgt - t.ppcvaljurpospgt), 
            SUM (t.ppcvalmorantpgt - t.ppcvalmorpospgt), 
            SUM (t.ppcvaliofantpgt - t.ppcvaliofpospgt), 
            SUM (t.ppcvalmulantpgt - t.ppcvalmulpospgt)
       INTO v_con_num_est, 
      v_data,
      v_principal_pago, 
            v_juros_pago, 
            v_mora_paga, 
            v_iof_pago, 
            v_multa_paga            
       from   emptblppc t, tb_con c, tb_pgt p 
      WHERE t.con_num = c.con_num 
        AND t.ppcdthalt = c.con_dat_alt 
        AND t.con_num = p.con_num 
        AND t.ppcdthalt = p.pgt_dat_alt 
        AND t.pgt_dat = p.pgt_dat 
        AND t.ppcdthalt = '01 jan 1960' 
        AND TO_CHAR (p.DATA, 'DD-MM-YYYY') = '23-12-2007' 
   GROUP BY c.con_num_est, TO_DATE (t.pgt_dat, 'dd/mm/yyyy'); 

   v_arquivo := UTL_FILE.fopen ('/backup/CPMF', 'EMPRESTIMO_GF.CSV', 'W'); 
   UTL_FILE.put_line (v_arquivo, 'v_con_num_est    : '||NVL (v_con_num_est, 0));
   UTL_FILE.put_line (v_arquivo, 'v_data           : '||NVL (v_data, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_principal_pago : '||NVL (v_principal_pago, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_juros_pago     : '||NVL (v_juros_pago, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_mora_paga      : '||NVL (v_mora_paga, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_iof_pago       : '||NVL (v_iof_pago, 0)); 
   UTL_FILE.put_line (v_arquivo, 'v_multa_paga     : '||NVL (v_multa_paga, 0)); 
   UTL_FILE.fclose (v_arquivo); 
END;
/
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

mariogus escreveu:Erro que aparece no sqlplus:

Selecionar tudo

ERRO na linha 1:
ORA-06550: line 1, column 7:
PLS-00905: object FINEMPDBS.PRC_EMPRESTIMO_GF is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
O que será FINEMPDBS ?
esse código que você passou é o corpo da sua procedure, qual é o código qu e você está usando pra rodar sua procedure??

[]'s
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

é o nome do usuário. E o código que passei é a procedure que estou tentando executar.
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Mas esse código que você passou é o corpo da procedure, rodando esse código você vai somente criar ela.. depois de criá-la você terá q executa-la.

Como você está tentando executa-la??

[]'s
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Ah..entendi...essa procedure iria ser executada em uma job - a execução que hoje faço é pelo PL/SQL Developer. Para rodar todos os dias..sem intermediaçao alguma ....
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Selecionar tudo

*
ERRO na linha 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to
'PRC_SALDO_CARTEIRA_GF'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Código:

Selecionar tudo

create or replace procedure prc_saldo_carteira_gf (p_errmsg out varchar,
                                        p_data_saldo in date) is
                                        
    cursor c_saldo_carteira_gf (p_dt_saldo varchar2) is
      SELECT distinct
             cl.cli_cod_cgccpf as CNPJ,
             cl.cli_rsl as RAZAO_SOCIAL,
             c.pta_num NUMERO_CONTRATO,
             c.con_val as VALOR_INICIAL,
             t.oper_nom as GERENTE,
             
             NVL((select sum(s.sdo_val)
                     from tb_con c,
                          tb_sdo s
                   where c.con_num = s.con_num
                     and c.con_dat_alt = s.sdo_dat_alt
                     and c.cli_cod = cl.cli_cod
                     and c.con_dat_alt = '01 jan 1960'
                     and c.sitcon_cod in (1,2,3,4)
                     and s.lan_num_lib = 1
                     and s.prc_num = 0
                     and s.lan_seq_par = 1
                     and s.lan_tip = 1
                     and s.sdo_dat >= p_dt_saldo), 0) as SALDO_DEVEDOR,

             c.con_val_taxctb TAXA,
             c.con_val_tar TAC,

             (select max(c.con_dat_vct)
                from tb_con c,
                     tb_sdo s
                 where c.con_num = s.con_num
                 and c.con_dat_alt = s.sdo_dat_alt
                 and c.cli_cod = cl.cli_cod
                 and c.con_dat_alt = '01 jan 1960'
                 and c.sitcon_cod in (1,2,3,4)
                 and s.lan_num_lib = 1
                 and s.prc_num = 0
                 and s.lan_seq_par = 1
                 and s.lan_tip = 1
                 and s.sdo_dat >= p_dt_saldo) as vencto,

             (select max(c.CON_DAT)
                from tb_con c,
                     tb_sdo s
               where c.con_num = s.con_num
                 and c.con_dat_alt = s.sdo_dat_alt
                 and c.cli_cod = cl.cli_cod
                 and c.con_dat_alt = '01 jan 1960'
                 and c.sitcon_cod in (1,2,3,4)
                 and s.lan_num_lib = 1
                 and s.prc_num = 0
                 and s.lan_seq_par = 1
                 and s.lan_tip = 1
                 and s.sdo_dat >= p_dt_saldo) as Data_Contrato

      FROM tb_cli cl,
           tb_con c ,
           tb_oper t
           

     WHERE c.cli_cod = cl.cli_cod
       AND c.con_dat_alt = '01 jan 1960'
       AND c.sitcon_cod in (1,2,3,4)
       AND c.con_num_ger = t.oper_cod
       AND (NVL((select sum(s.sdo_val)
                   from tb_con c,
                        tb_sdo s
                  where c.con_num = s.con_num
                    and c.con_dat_alt = s.sdo_dat_alt
                    and c.cli_cod = cl.cli_cod
                    and c.con_dat_alt = '01 jan 1960'
                    and c.sitcon_cod in (1,2,3,4)
                    and s.lan_num_lib = 1
                    and s.prc_num = 0
                    and s.lan_seq_par = 1
                    and s.lan_tip = 1
                    and s.sdo_dat >= p_dt_saldo), 0)) > 0;

    v_data_saldo        varchar2(8);
    v_nome_arquivo      varchar2(100);
    v_arquivo           utl_file.file_type;
    v_diretorio         varchar2(200)  := '/backup/CPMF';
    
    v_registro_header   varchar2(1000);
    v_registro_detail   varchar2(1000);
    v_registro_trailler varchar2(1000);

    v_quantidade      number := 0;

  begin

    if p_data_saldo is null then
       v_data_saldo := to_char(sysdate, 'ddmmyyyy');
    else
       v_data_saldo := to_char(p_data_saldo, 'ddmmyyyy');
    end if;

    v_nome_arquivo := 'CARTEIRAGF'||
                      v_data_saldo||
                      '.csv';

    v_arquivo := utl_file.fopen(v_diretorio, v_nome_arquivo, 'W');
    
    -- 4.2.1  Registro Header
    v_registro_header := 'CNPJ'||
                         ';'||
                         'RAZAO_SOCIAL'||
                         ';'||
                         'NUMERO_CONTRATO'||
                         ';'||
                         'VALOR_INICIAL'||
                         ';'||
                         'SALDO_DEVEDOR'||
                         ';'||
                         'TAXA'||
                         ';'||
                         'TAC'||
                         ';'||
                         'VENCTO'||
                         ';'||
                         'DATA_CONTRATO'||
                         ';'||
                         'GERENTE'||
                         ';';

    utl_file.put_line(v_arquivo, v_registro_header);
    
    -- 4.2.2  Registro Detail
    for i in c_saldo_carteira_gf (v_data_saldo) loop

        v_registro_detail := substr(i.cnpj, 1, 2)||'.'||
                             substr(i.cnpj, 3, 3)||'.'||
                             substr(i.cnpj, 6, 3)||'/'||
                             substr(i.cnpj, 9, 4)||'-'||
                             substr(i.cnpj, 13, 2)||
                             ';'||
                             i.razao_social||
                             ';'||
                             i.numero_contrato||
                             ';'||
                             i.valor_inicial||
                             ';'||
                             to_char(i.saldo_devedor * 1000000, '9999999999999999,000000')||
                             ';'||
                             to_char(i.taxa * 1000000, '999999999,000000')||
                             ';'||
                             to_char(i.tac * 100, '999999999999,00')||
                             ';'||
                             to_char(i.vencto, 'dd/mm/yyyy')||
                             ';'||
                             to_char(i.data_contrato, 'dd/mm/yyyy')||
                             ';'||
                             i.gerente||
                             ';';                           
                             
        utl_file.put_line(v_arquivo, v_registro_detail);

        v_quantidade := v_quantidade + 1;

    end loop;
    
    -- 4.2.7  Registro Trailler
    v_registro_trailler := 'TOTAL DE REGISTROS'||
                         rpad(' ', 10, ' ')||
                         v_quantidade;

    utl_file.put_line(v_arquivo, v_registro_trailler);

    utl_file.fclose(v_arquivo);
    
     exception
    when utl_file.invalid_mode then
      p_errmsg := SQLERRM;
    when utl_file.invalid_path then
      p_errmsg := SQLERRM;
    when utl_file.invalid_filehandle then
      p_errmsg := SQLERRM;
    when utl_file.invalid_operation then
      p_errmsg := SQLERRM;
    when utl_file.read_error then
      p_errmsg := SQLERRM;
    when utl_file.write_error then
      p_errmsg := SQLERRM;
    when utl_file.internal_error then
      p_errmsg := SQLERRM;
    when others then
      p_errmsg := SQLERRM;

end prc_saldo_carteira_gf;
/
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Esse erro ai é por você não estar passando corretamente os parametros da procedure..

ai vai um exemplo de como deve ser a chamada dela..

Selecionar tudo

DECLARE
   v_erromsg   VARCHAR2 (1000);
BEGIN
   prc_saldo_carteira_gf (p_errmsg          => v_erromsg,
                          p_data_saldo      => TRUNC (SYSDATE)
                         );
END;
[]'s
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Como posso aplicar essa chamado nesse código?
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Esse erro que você passou acima ocorre em que momento?
É algum job que executa ele??

[]'s!!
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Pra você poder testar a sua procedure você pode utilizar o código abaixo.

Selecionar tudo

DECLARE 
   v_erromsg   VARCHAR2 (1000); 
BEGIN 
   prc_saldo_carteira_gf (p_errmsg          => v_erromsg, 
                          p_data_saldo      => TRUNC (SYSDATE) 
                         ); 
   if v_erromsg is not null then
      dbms_output.put_line('Erro : '||v_erromsg);
   end if;
END;
caso ocorra algum erro será apresentado a descrição do mesmo.
Pra executar você pode colar esse código no SQL*Plus, PL/SQL Developer, etc...
só não se esqueça que cada ferramenta tem sua forma de habilitar as mensagens via DBMS_OUTPUT...
qualquer dúvida é só falar..

[]s'!!
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

E com isso posso criar a job? Rodou,sem problemas..
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Você pode utilizar esse código no job sim, porem dessa forma que está ai você não vai saber quando ocorreu algum problema, pois a mensagem de erro está sendo exibida somente como output...

nesse caso seria interessante você apresentar esse erro de alguma forma... uma opção seria você gravar esse erro em uma tabela, outra opcao, e que geralmente é a que utilizo é enviar um e-mail comunicando que ocorreu erro durante esse processo..

[]'s
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

No SQL Plus ele apresenta esse erro:

Selecionar tudo

SQL> execute prc_saldo_carteira_gf
BEGIN prc_saldo_carteira_gf; END;

      *
ERRO na linha 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to
'PRC_SALDO_CARTEIRA_GF'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored 
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Sim, na sua procedure você tem 2 parametros, e nessa chamada que você rodou no SQL Plus não tem nenhuma...
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Podes me mostrar como fazer?
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

você pode fazer como está na penultima mensagem da pagina 2 desse tópico....
é só pegar aquele código e rodar..

[]'s
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Apareceu essa mensagem de erro na job :

Alguém pode me ajudar?

JOB:

Selecionar tudo

SQL> declare
    x integer;
begin
    dbms_job.submit (x,'prc_saldo_carteira_gf;',
   trunc(sysdate)+1+21/24+15/1440,
   'trunc(sysdate)+1+21/24+15/1440');
    dbms_output.put_line(TO_CHAR(x));
end;
/  2    3    4    5    6    7    8    9
declare
*
ERROR at line 1:
ORA-06550: line 1, column 93:
PLS-00306: wrong number or types of arguments in call to 'PRC_SALDO_CARTEIRA_GF'
ORA-06550: line 1, column 93:
PL/SQL: Statement ignored
ORA-06512: at "SYS.DBMS_JOB", line 79
ORA-06512: at "SYS.DBMS_JOB", line 136
ORA-06512: at line 4
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Você não passou parâmetros para tua procedure ('PRC_SALDO_CARTEIRA_GF' ).

Você deve passar dois valores como parâmetro.

O Tineks havia lhe passado como trabalhar com a montagem da chamada, na página 2, conforme abaixo:

Selecionar tudo

   prc_saldo_carteira_gf (p_errmsg          => v_erromsg, 
                          p_data_saldo      => TRUNC (SYSDATE) 
                         ); 

skorp
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Seg, 21 Jan 2008 1:00 am
Localização: Samambaia - DF

Opa opa............
Ola galera...........
Desculpa por interromper na conversa de vocês's......

Eu sou novo no forum.....
Não sei nem se deveria postar esta mensagem aqui......
Mais vamos la........

Bom....
Além de novo no forum....
Eu tambem sou novo em ORACLE....
Mais estou muito interessado.......

Se alguém poder me ajudar ai......
Eu procuro uma apostila que me insine do começo....
Tudo que eu sei sobre banco de dados...
Aprendi num curso de Access....
Então alguém ai pode me ajudar por favor.......


skorp_2005@yahoo.com.br


Abraço........

.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Dá uma olhada na parte de Tutoriais que podem lhe ajudar no início, inclusive de PL/SQL.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes