Hola, a ver si me podeis echar una manita, porque estoy ya estresado porque no se donde falla. Tengo el siguiente TRIGGER:
Código SQL:
Ver originalCREATE OR REPLACE TRIGGER "Genera_factura_AFTER"
AFTER
INSERT OR UPDATE ON "Consumo"
DECLARE
var_serie_anual VARCHAR2(150);
var_anio INTEGER := "RI_G_f".NewG_f."Anio";
var_mes VARCHAR2(10) := "RI_G_f".NewG_f."Mes";
var_consumo NUMBER(10,2) := "RI_G_f".NewG_f."Consumo";
var_id_abastecimiento NUMBER := "RI_G_f".NewG_f."Id_abastecimiento";
var_fecha_emision DATE;
var_estado VARCHAR2(9) := 'No pagada';
var_importe_total NUMBER(10,2);
var_precio_m3 NUMBER(10,2);
var_canon NUMBER(10,2);
var_cargo_exceso NUMBER(1,2);
var_consum_max NUMBER(6,2);
var_iva NUMBER(1,2);
var_importe_total_iva NUMBER(10,2);
var_exceso NUMBER(10,2);
BEGIN
SELECT (to_char(sysdate,'YYYY') ||'/'|| "SERIE_ANUAL_SEQ".NEXTVAL) INTO var_serie_anual FROM DUAL;
SELECT to_date(to_char(sysdate, 'dd/mm/yyyy')) INTO var_fecha_emision FROM DUAL;
SELECT PA."Precio_m3", PA."Canon", PA."Recargo_exceso", PA."Consumo_maximo"
INTO var_precio_m3, var_canon, var_cargo_exceso, var_consum_max
FROM "Contratacion-tarifa" CT INNER JOIN "Punto_abas-contrato" PA INNER JOIN "Tarifa" TA
WHERE TA."Id_tarifa"=CT."Id_tarifa" AND TA."Anio"=CT."Anio" AND CT."Id_contrato"=PA."Id_contrato" AND PA."Id_abastecimiento"=var_id_abastecimiento;
SELECT "IVA" INTO var_iva FROM "Punto_abastecimiento" PA WHERE PA."Id_abastecimiento"=var_id_abastecimiento;
IF(var_consumo>var_consumo_max)
THEN
var_exceso:=var_consumo - var_consumo_max;
ELSE
var_exceso:=0;
END IF;
var_importe_total:= var_canon+(var_consumo*var_precio_m3)+(var_exceso*var_cargo_exeso);
var_importe_total_iva:= var_importe_total*(1+iva);
INSERT INTO "Factura" ("Serie_anual","Anio", "Mes", "Id_abastecimiento",
"Fecha_emision", "Situacion_factura", "Importe_total",
"IVA_aplicado", "Importe_total_con_IVA") VALUES (var_serie_anual,
var_anio, var_mes, var_id_abastecimiento, var_fecha_emision,
var_estado, var_importe_total, var_iva, var_importe_total_iva);
END;
Y el compilador del Oracle 10g me dice lo siguiente:
Código PHP:
23 9 PL/SQL: ORA-00905: falta una palabra clave
20 9 PL/SQL: SQL Statement ignored
¿Cómo lo podría solucionar? Porque según pone es la lina 20 y la linea 20 es el BEGIN...
Gracias de antemano ;)