Código SQL:
Ver original
CREATE 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
Gracias de antemano ;)