Call function desde un trigger...
Publicado por Fabian Massey (1 intervención) el 06/07/2006 04:42:39
Hola para todos:
estoy incursionando en el mundo Oracle 9i... necesito realizar unas operaciones con registros para lo cual he creado una funcion llamada get_VarDiaria, ahora el problema ha sido q no he encontrado la manera de llamar dicha funcion desde un trigguer q afecte todos lo registros. Apecio todo la ayuda q me puedan brindar...
CREATE OR REPLACE FUNCTION get_VarDiaria(v_emisor IN VARCHAR2, v_fecha IN DATE) RETURN NUMBER IS
a_fecha DATE;
v_total NUMBER(17,2);
ant_pca NUMBER(17,2);
act_pca NUMBER(17,2);
a_var NUMBER(17,2);
BEGIN
a_fecha := v_fecha - 1;
SELECT SUM(voltr)INTO v_total FROM diario WHERE (emisor = v_emisor)AND(fecha = a_fecha);
WHILE(v_total IS NULL)LOOP
a_fecha := a_fecha - 1;
SELECT SUM(voltr)INTO v_total FROM diario WHERE (emisor = v_emisor)AND(fecha = a_fecha);
END LOOP;
SELECT pca INTO ant_pca FROM diario WHERE (emisor = v_emisor)AND(fecha = a_fecha);
SELECT pca INTO act_pca FROM diario WHERE (emisor = v_emisor)AND(fecha = v_fecha);
SELECT (((act_pca/ant_pca)-1)*100) INTO a_var FROM dual;
RETURN(a_var);
END;
estoy incursionando en el mundo Oracle 9i... necesito realizar unas operaciones con registros para lo cual he creado una funcion llamada get_VarDiaria, ahora el problema ha sido q no he encontrado la manera de llamar dicha funcion desde un trigguer q afecte todos lo registros. Apecio todo la ayuda q me puedan brindar...
CREATE OR REPLACE FUNCTION get_VarDiaria(v_emisor IN VARCHAR2, v_fecha IN DATE) RETURN NUMBER IS
a_fecha DATE;
v_total NUMBER(17,2);
ant_pca NUMBER(17,2);
act_pca NUMBER(17,2);
a_var NUMBER(17,2);
BEGIN
a_fecha := v_fecha - 1;
SELECT SUM(voltr)INTO v_total FROM diario WHERE (emisor = v_emisor)AND(fecha = a_fecha);
WHILE(v_total IS NULL)LOOP
a_fecha := a_fecha - 1;
SELECT SUM(voltr)INTO v_total FROM diario WHERE (emisor = v_emisor)AND(fecha = a_fecha);
END LOOP;
SELECT pca INTO ant_pca FROM diario WHERE (emisor = v_emisor)AND(fecha = a_fecha);
SELECT pca INTO act_pca FROM diario WHERE (emisor = v_emisor)AND(fecha = v_fecha);
SELECT (((act_pca/ant_pca)-1)*100) INTO a_var FROM dual;
RETURN(a_var);
END;
Valora esta pregunta


0