create or replace
trigger apps.xv_ri_atualiza_conta_contabil
BEFORE INSERT OR UPDATE ON apps.rec_invoice_lines_interface
FOR EACH ROW
declare
new_code_combination (10);
BEGIN
update apps.rec_invoice_lines_interface
set db_code_combination_id = 28493
WHERE interface_invoice_id IN (
SELECT interface_invoice_id
FROM rec_invoices_interface
WHERE invoice_num =
(select nd.nf_numero from
ecomex.num_documentos nd, ecomex.num_vw_doc_despesas ndd,
apps.rec_invoices_interface ri
where nd.entidade_id in (86711, 86715)
and nd.documento_id = ndd.documento_id
and ndd.despesa_codigo = 'FRETE RODO'
and nd.organization_code = 'MAM'
and nd.nf_numero = ri.invoice_num
and nd.organization_code = ri.organization_code
and nd.documento_id = :new.documento_id));
END;
Error(7,22): PLS-00103: Encountered the symbol "(" when expecting one of the following: constant exception <an identifier> <a double-quoted delimited-identifier> table LONG_ double ref char time timestamp interval date binary national character nchar The symbol "<an identifier>" was substituted for "(" to continue.
Error(24,43): PLS-00049: bad bind variable 'NEW.DOCUMENTO_ID'
create or replace
trigger apps.xv_ri_atualiza_conta_contabil
BEFORE INSERT OR UPDATE ON apps.rec_invoice_lines_interface
FOR EACH ROW
declare
new_code_combination (10);
BEGIN
update apps.rec_invoice_lines_interface
set db_code_combination_id = 28493
WHERE interface_invoice_id IN (
SELECT interface_invoice_id
FROM rec_invoices_interface
WHERE invoice_num in
(select nd.nf_numero from
ecomex.num_documentos nd, ecomex.num_vw_doc_despesas ndd,
apps.rec_invoices_interface ri
where nd.entidade_id in (86711, 86715)
and nd.documento_id = ndd.documento_id
and ndd.despesa_codigo = 'FRETE RODO'
and nd.organization_code = 'MAM'
and nd.nf_numero = ri.invoice_num
and nd.organization_code = ri.organization_code
and nd.documento_id = :new.documento_id));
END;
Está faltando o Datatype.
Pelo que vi, você não utiliza esta variável na trigger.
Se puder eliminá-la da declaração ou, declarar teu datatype acho que corrige teu problema.
Pessoal, fiz algumas alterações e consegui tirar um erro, agora somente tem o erro do NEW, troquei o NEW por 123 e compilou, como posso mudar essa parte?
create or replace
trigger apps.xv_ri_atualiza_conta_contabil
BEFORE INSERT OR UPDATE ON apps.rec_invoice_lines_interface
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
declare
new_code_combination NUMBER;
BEGIN
update apps.rec_invoice_lines_interface
set db_code_combination_id = 28493
WHERE interface_invoice_id IN (
SELECT interface_invoice_id
FROM rec_invoices_interface
WHERE invoice_num in
(select nd.nf_numero from
ecomex.num_documentos nd, ecomex.num_vw_doc_despesas ndd,
apps.rec_invoices_interface ri
where nd.entidade_id in (86711, 86715)
and nd.documento_id = ndd.documento_id
and ndd.despesa_codigo = 'FRETE RODO'
and nd.organization_code = 'MAM'
and nd.nf_numero = ri.invoice_num
and nd.organization_code = ri.organization_code
and nd.documento_id = 123));
END;
create or replace
trigger apps.xv_ri_atualiza_conta_contabil
BEFORE INSERT OR UPDATE ON apps.rec_invoice_lines_interface
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
declare
new_code_combination NUMBER;
BEGIN
UPDATE apps.rec_invoice_lines_interface
SET db_code_combination_id = 28493
WHERE interface_invoice_id IN (
SELECT interface_invoice_id
FROM apps.rec_invoices_interface
WHERE invoice_num IN (
SELECT nd.nf_numero
FROM ecomex.num_documentos nd,
ecomex.num_vw_doc_despesas ndd,
apps.rec_invoices_interface ri
WHERE nd.entidade_id IN (86711, 86715)
AND nd.documento_id = ndd.documento_id
AND ndd.despesa_codigo = 'FRETE RODO'
AND nd.organization_code = 'MAM'
AND nd.nf_numero = ri.invoice_num
AND nd.organization_code = ri.organization_code)
AND apps.rec_invoices_interface.interface_invoice_id =
:new.interface_invoice_id);
END;