erro ORA-06550: línea 53, columna 55:

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
bart_wagner
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 18
Registrado em: Sáb, 09 Jun 2007 7:41 am
Localização: Peruibe - SP

olá pessoa, alguém poderia me ajudar a sabe que tipo de erro é esse

Selecionar tudo

ORA-06550: línea 53, columna 55:
PL/SQL: ORA-00904: "S_INV"."TXT_FISCAL_DOCUMENT_NUMBER": identificador no válido
ORA-06550: línea 51, columna 16:
PL/SQL: SQL Statement ignored


declare
CURSOR C_CASH_INVOICES IS
       select  
	       btbr.txt_fiscal_DOCUMENT_NUMBER,
		   btbr.txt_fed_gov_tax_number,
		   apin.vendor_id,
		   pove.GLOBAL_ATTRIBUTE10, 
		   pove.GLOBAL_ATTRIBUTE11,
		   pove.GLOBAL_ATTRIBUTE12,
		   pove.vendor_site_id
	   from 
                   btbr_cash_invoice_20081002       btbr
        inner join ap_invoices_all                  apin
                on btbr.txt_fiscal_DOCUMENT_NUMBER = apin.invoice_num
        inner join po_vendor_sites_all              pove
                on apin.vendor_id = pove.vendor_id
	         where pove.GLOBAL_ATTRIBUTE10 || pove.GLOBAL_ATTRIBUTE11 || pove.GLOBAL_ATTRIBUTE12 
                   = '0' || btbr.txt_fed_gov_tax_number
	           and pove.vendor_site_id = apin.vendor_site_id;
			   
cursor C_CASH_INVOICE_ri is
       select 
	       btbr.txt_fiscal_DOCUMENT_NUMBER,
		   btbr.txt_fed_gov_tax_number,
		   reci.ENTITY_ID,
		   reci.invoice_amount,
		   reci.invoice_date,   
		   pove.vendor_site_id,
		   pove.GLOBAL_ATTRIBUTE10,
		   pove.GLOBAL_ATTRIBUTE11,
		   pove.GLOBAL_ATTRIBUTE12 
	from 
                   btbr_cash_invoice_20081002     btbr
        inner join rec_invoices                   reci
                on btbr.txt_fiscal_DOCUMENT_NUMBER = reci.invoice_num
        inner join rec_fiscal_entities_all        refi
                on reci.ENTITY_ID = refi.entity_id
        inner join po_vendor_sites_all            pove
                on pove.vendor_site_id = refi.vendor_site_id
             where reci.invoice_date = btbr.invoice_date
	           and pove.GLOBAL_ATTRIBUTE10 || pove.GLOBAL_ATTRIBUTE11 || pove.GLOBAL_ATTRIBUTE12 
                   = '0' || btbr.txt_fed_gov_tax_number;
        BEGIN
              FOR S_INV IN C_CASH_INVOICES LOOP
	              UPDATE BTBR_CASH_INVOICE_20081002
                     SET FLG_ORACLE             = 1
                   WHERE txt_fiscal_DOCUMENT_NUMBER = S_INV.txt_fiscal_DOCUMENT_NUMBER 
                     AND txt_fed_gov_tax_number = S_INV.txt_fed_gov_tax_number;
	          end loop;
	          FOR S_INV_ri IN C_CASH_INVOICE_ri LOOP
	              UPDATE BTBR_CASH_INVOICE_20081002 
                     SET FLG_ORACLE             = 1
                   WHERE txt_fiscal_DOCUMENT_NUMBER = S_INV.txt_fiscal_DOCUMENT_NUMBER 
                     AND txt_fed_gov_tax_number = S_INV_ri.txt_fed_gov_tax_number;
	      end loop;
        end;
/
não sei porque acontece esse tipo de erro
desde já agradeço a ajuda de vocês
rerodrig
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 06 Fev 2008 10:33 am
Localização: Americana - SP

Cara, lá no final, onde você faz o loop no segundo cursor, você está referenciando um campo do primeiro cursor que já foi fechado no loop acima...falow!
bart_wagner
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 18
Registrado em: Sáb, 09 Jun 2007 7:41 am
Localização: Peruibe - SP

cara não entendi poderia me detalhar melhor

os dois loops passam por cursores com campos iguais, só tendo diferença em uma tabela entre um cursor e outro
bart_wagner
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 18
Registrado em: Sáb, 09 Jun 2007 7:41 am
Localização: Peruibe - SP

agora entendi obrigado
bart_wagner
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 18
Registrado em: Sáb, 09 Jun 2007 7:41 am
Localização: Peruibe - SP

ORA-01722: número no válido
ORA-06512: en línea 50

agora apareceu este erro, alguém conhece???

Selecionar tudo

declare
CURSOR C_CASH_INVOICES IS
       select  
	       btbr.txt_fiscal_DOCUMENT_NUMBER,
		   btbr.txt_fed_gov_tax_number,
		   apin.vendor_id,
		   pove.GLOBAL_ATTRIBUTE10, 
		   pove.GLOBAL_ATTRIBUTE11,
		   pove.GLOBAL_ATTRIBUTE12,
		   pove.vendor_site_id
	   from 
                   btbr_cash_invoice_20081002       btbr
        inner join ap_invoices_all                  apin
                on btbr.txt_fiscal_DOCUMENT_NUMBER = apin.invoice_num
        inner join po_vendor_sites_all              pove
                on apin.vendor_id = pove.vendor_id
	         where pove.GLOBAL_ATTRIBUTE10 || pove.GLOBAL_ATTRIBUTE11 || pove.GLOBAL_ATTRIBUTE12 
                   = '0' || btbr.txt_fed_gov_tax_number
	           and pove.vendor_site_id = apin.vendor_site_id;
			   
cursor C_CASH_INVOICE_ri is
       select 
	       btbr.txt_fiscal_DOCUMENT_NUMBER,
		   btbr.txt_fed_gov_tax_number,
		   reci.ENTITY_ID,
		   reci.invoice_amount,
		   reci.invoice_date,   
		   pove.vendor_site_id,
		   pove.GLOBAL_ATTRIBUTE10,
		   pove.GLOBAL_ATTRIBUTE11,
		   pove.GLOBAL_ATTRIBUTE12 
	from 
                   btbr_cash_invoice_20081002     btbr
        inner join rec_invoices                   reci
                on btbr.txt_fiscal_DOCUMENT_NUMBER = reci.invoice_num
        inner join rec_fiscal_entities_all        refi
                on reci.ENTITY_ID = refi.entity_id
        inner join po_vendor_sites_all            pove
                on pove.vendor_site_id = refi.vendor_site_id
             where reci.invoice_date = btbr.invoice_date
	           and pove.GLOBAL_ATTRIBUTE10 || pove.GLOBAL_ATTRIBUTE11 || pove.GLOBAL_ATTRIBUTE12 
                   = '0' || btbr.txt_fed_gov_tax_number;
        BEGIN
              FOR S_INV IN C_CASH_INVOICES LOOP
	              UPDATE BTBR_CASH_INVOICE_20081002
                     SET FLG_ORACLE             = 1
                   WHERE txt_fiscal_DOCUMENT_NUMBER = S_INV.txt_fiscal_DOCUMENT_NUMBER 
                     AND txt_fed_gov_tax_number = S_INV.txt_fed_gov_tax_number;
	          end loop;
	          FOR S_INV_ri IN C_CASH_INVOICE_ri LOOP
	              UPDATE BTBR_CASH_INVOICE_20081002 
                     SET FLG_ORACLE             = 1
                   WHERE txt_fiscal_DOCUMENT_NUMBER = S_INV_ri.txt_fiscal_DOCUMENT_NUMBER 
                     AND txt_fed_gov_tax_number = S_INV_ri.txt_fed_gov_tax_number;
	      end loop;
        end;
/
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5018
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Vou te apresentar um site:
http://ora-code.com/

Neste site você encontra todos os erros do oracle E o que está acontecendo de errado.
No site da ORACLE também o manual de ERROS, que explica o que é cada erro.

Neste seu caso acima:

Selecionar tudo

ORA-01722: número no válido
ORA-06512: en línea 50 
Significa que tem um NÚMERO INVÁLIDO na linha 50!

Traduzindo: Precisa ser um número, mas tu ta passando algo que NÃO É NUMERO. Revise os parametros, ou as informações dos campos. Aposto que é naquele local com um monte de || ...
Responder
  • Informação
  • Quem está online

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