Erro PL/SQL

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
sbin
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qui, 03 Set 2009 3:49 pm
Localização: Minas

Colegas,

estou compilando o seguinte codigo, e está me retornando o seguinte erro:

Selecionar tudo

(1): PLS-00905: o objeto APPS.XUNI_INTEGRATION_RI_PKG é inválido
(2): PLS-00304: não é possível compilar o texto de 'XUNI_INTEGRATION_RI_PKG' sem a respectiva especificação
(3): PL/SQL: Compilation unit analysis terminated

Selecionar tudo

PACKAGE XUNI_INTEGRATION_RI_PKG is

  -- Cria HEADER da nota
  PROCEDURE CREATE_INVOICE(p_invoice   XUNI_T_RI_INVOICE);


END;

PACKAGE BODY XUNI_INTEGRATION_RI_PKG is
--
  PROCEDURE CREATE_INVOICE(p_invoice   XUNI_T_RI_INVOICE) IS

        v_invoice              CLL_F189_INVOICES_INTERFACE%rowtype;
       
        v_invoice_line         CLL_F189_INVOICE_LINES_IFACE%rowtype;

        v_batch_error_flag        varchar2(1000);

        v_invoices_fetched        number;

        v_invoices_created        number;

        v_total_invoice_amount    number;

        v_print_batch             varchar2(1000);

        v_response                boolean;

        v_error_message           varchar2(32767);
    
    -- Procedure
    BEGIN
      -- Olhar amahã. 
      XUNI_INTEGRATION_INFO_PKG.APP_INITIALIZE_AP;
      
      -- substituindo
      mo_global.set_policy_context('S',p_invoice.org_id);
      
      
      GET_VENDOR( p_invoice.cnpj

                  ,v_invoice.vendor_id

                  ,v_invoice.vendor_site_id);

        BEGIN

          SELECT invoice_id

            INTO v_invoice.invoice_id

            FROM CLL_F189_INVOICE_LINES_IFACE                   -- ap_invoices_all
       
           WHERE vendor_id = v_invoice.vendor_id
       
             AND vendor_site_id = v_invoice.vendor_site_id
        
             AND invoice_num =  p_invoice.invoice_num;
        
        EXCEPTION
        
             WHEN no_data_found then
             
                null;
             
             WHEN others then

                raise_application_error(-20000,'Erro ao verificar NF no RI: '||sqlerrm);

        END;

        IF v_invoice.invoice_id is NOT NULL THEN

            return;

        END IF;

        v_invoice.terms_id := GET_TERM_ID(p_invoice.due_days);

        v_invoice.invoice_num                   := p_invoice.invoice_num;

        v_invoice.invoice_type_lookup_code      := p_invoice.invoice_type;

        v_invoice.invoice_date                  := p_invoice.invoice_date;

        v_invoice.gl_date                       := p_invoice.invoice_date;

        v_invoice.invoice_amount                := p_invoice.invoice_amount;

        v_invoice.invoice_currency_code         := p_invoice.invoice_currency_code;

        v_invoice.source                        := p_invoice.source;

        v_invoice.accts_pay_code_concatenated   := p_invoice.accts_pay_code_concatenated;

        v_invoice.org_id                        := p_invoice.org_id;

        v_invoice.terms_date                    := p_invoice.terms_date;


        SELECT CLL_F189_INVOICES_INTERFACE.nextval

          INTO v_invoice.invoice_id

          FROM dual;

        
/*
        INSERT INTO CLL_F189_INVOICES_INTERFACE values v_invoice;

        

        FOR i IN p_invoice.invoice_lines.FIRST..p_invoice.invoice_lines.LAST LOOP

          v_invoice_line.invoice_id              := v_invoice.invoice_id;

          v_invoice_line.line_number             := i;

          v_invoice_line.line_type_lookup_code   := p_invoice.invoice_lines(i).line_type;

          v_invoice_line.amount                  := p_invoice.invoice_lines(i).amount;

          v_invoice_line.dist_code_concatenated  := p_invoice.invoice_lines(i).dist_code_concatenated;

          v_invoice_line.description             := p_invoice.invoice_lines(i).description;
     

          SELECT CLL_F189_INVOICE_LINES_IFACE_S.nextval
          
            INTO v_invoice_line.invoice_line_id
          
            FROM dual;
          
          INSERT INTO CLL_F189_INVOICE_LINES_IFACE VALUES v_invoice_line;      

        

        END LOOP;
*/
        -- VER QUAL OBEJTO DE IMPORTACAO
        v_response := AP_IMPORT_INVOICES_PKG.IMPORT_INVOICES(p_batch_name              => 'N/A'

                                                            ,p_gl_date                 => null

                                                            ,p_hold_code               => null

                                                            ,p_hold_reason             => null

                                                            ,p_commit_cycles           => null

                                                            ,p_source                  => 'XUNI_PROV_PROD_MEDICA_PJ'  -- VER COM O RICARDO

                                                            ,p_group_id                => null

                                                            ,p_conc_request_id         => -1

                                                            ,p_debug_switch            => 'N'

                                                            ,p_org_id                  => 83

                                                            ,p_batch_error_flag        => v_batch_error_flag

                                                            ,p_invoices_fetched        => v_invoices_fetched

                                                            ,p_invoices_created        => v_invoices_created

                                                            ,p_total_invoice_amount    => v_total_invoice_amount

                                                            ,p_print_batch             => v_print_batch

                                                            ,p_calling_sequence        => null

                                                            ,p_invoice_interface_id    => v_invoice.invoice_id

                                                            --p_needs_invoice_approval  => IN            VARCHAR2 DEFAULT 'N',

                                                            ,p_commit                  => 'N' --IN            VARCHAR2 DEFAULT 'Y')

                                                            );



    

        IF v_batch_error_flag = 'Y' OR NOT v_response THEN

            v_error_message := 'ERROR: ';

            
            /*
            FOR i IN (SELECT lookup_code ||' - '||description rejection_desc

                        FROM ap_lookup_codes

                       WHERE lookup_type = 'REJECT CODE'

                         AND lookup_code IN (SELECT reject_lookup_code

                                               FROM ap_interface_rejections

                                              WHERE parent_id = v_invoice.invoice_id

                                                AND parent_table = 'AP_INVOICES_INTERFACE'

                                              UNION

                                             SELECT reject_lookup_code

                                               FROM ap_interface_rejections

                                              WHERE parent_id in (SELECT invoice_line_id

                                                                    FROM ap_invoice_lines_interface

                                                                   WHERE invoice_id = v_invoice.invoice_id) 

                                                  and parent_table = 'AP_INVOICE_LINES_INTERFACE')) LOOP
            
              v_error_message := v_error_message|| i.rejection_desc;
            
            

            END LOOP;  */

            raise_application_error(-20000,v_error_message);
            

        END IF;
      
    END;
    -- Procedure
--
END;
Avatar do usuário
jessica.ff
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 61
Registrado em: Seg, 11 Jun 2007 2:28 pm
Localização: Gravataí - RS
ninguém é tão sabio que não tenha a aprender, e nem tão ignorante que não tenha a ensinar.

infelizmente não consigo te ajudar.

Mas já procuste pelo código do erro?
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Cara, nem cheguei a ler código da sua package, mas o objeto APPS.XUNI_INTEGRATION_RI_PKG não existe pro usuario.
Da uma olhada se a spec dessa package esta com o mesmo nome da body, ou se a spec não esta inváilida, ou (nem sei se é possível) se você criou a spec em um owner e a body em outro.
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Outra coisa, vê se a spec chegou a ser compilada antes da body.
DSW
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Qui, 17 Set 2009 3:58 am
Localização: SP

Coloque uma barra / depois do END; da especificaçao ....

Selecionar tudo

END;
/

CREATE BODY ...
Jota
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 77
Registrado em: Qua, 17 Jun 2009 3:18 pm
Localização: Blumenau - SC
Jonatas Jaqmam Pereira
Analista Desenvolvedor de Sistemas

Vejo que você não colocou a instrução 'CREATE OR REPLACE'

Tente colocar antes do inicio da especificação e da body.

Mais ou menos desse jeito:

Selecionar tudo


CREATE OR REPLACE PACKAGE XUNI_INTEGRATION_RI_PKG is

  -- Cria HEADER da nota
  PROCEDURE CREATE_INVOICE(p_invoice   XUNI_T_RI_INVOICE);


END;

CREATE OR REPLACE PACKAGE BODY XUNI_INTEGRATION_RI_PKG is 
...
Qualquer coisa avisa ai.
Responder
  • Informação
  • Quem está online

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