ESTE ES EL CODIGO Y TAMBIENB ME SALE EL MISMO ERROR.
SERA QUE LA FUNCTION ESTA MAL (SINTAXIS)
CREATE OR REPLACE FUNCTION F_CANTIDAD_CLIENTE
(V_FECHA_FACT DATE,
V_CEDULA CLIENTE.COD_CLI%TYPE,
V_NUM_FACT VENTA_DROGA.N_FACT_VEN%TYPE,
V_COD_DROGA VENTA_DROGA.N_DRO%TYPE)
RETURN NUMBER
AS
V_CANTIDAD NUMBER;
BEGIN
SELECT COUNT(*) INTO V_CANTIDAD
FROM VENTA_DROGA VD JOIN FACTURA_VENTA FV ON FV.N_FACT_VEN =VD.N_FACT_VEN
JOIN CLIENTE C ON FV.COD_CLI = C.COD_CLI
WHERE FV.FEC_FACT_VEN <= V_FECHA_FACT AND C.COD_CLI=V_CEDULA AND VD.N_FACT_VEN=V_NUM_FACT AND VD.N_DRO = V_COD_DROGA;
RETURN V_CANTIDAD;
END;
DECLARE
CURSOR C_H_FREC_CLIENTE
IS SELECT * FROM FARMACIA.V_H_FREC_CLIENTE;
R_FREC_CLIENTE H_FRECUENCIA_CLIENTE%ROWTYPE;
V_CEDULA D_CLIENTE.CEDULA%TYPE;
V_EDAD D_CLIENTE.EDAD%TYPE;
V_GENERO D_CLIENTE.GENERO%TYPE;
V_ESTRATO D_CLIENTE.ESTRATO%TYPE;
V_FECHA_FACT DATE;
V_COD_CIUDAD D_LUGAR.COD_CIUDAD%TYPE;
V_COD_DPTO D_LUGAR.COD_DPTO%TYPE;
V_NUM_FACT D_VENTA.N_FACT_VEN%TYPE;
V_COD_DROGA D_VENTA.N_DROG%TYPE;
V_CANTIDAD D_VENTA.CANTIDAD%TYPE;
V_VALOR_VENTA D_DROGA.VALOR_VENTA%TYPE;
V_VALOR_COMPRA D_DROGA.VALOR_COMPRA%TYPE;
V_COD_FABRIC D_DROGA.COD_LAB%TYPE;
V_COD_SUCUR D_VENTA.COD_SUCUR%TYPE;
BEGIN
OPEN C_H_FREC_CLIENTE;
LOOP
FETCH C_H_FREC_CLIENTE INTO V_CEDULA,V_EDAD,V_GENERO,V_ESTRATO,V_FECHA_FACT,V_COD_CIUDAD,V_COD_DPTO,V_NUM_FACT,V_COD_DROGA,V_CANTIDAD,V_VALOR_VENTA,V_VALOR_COMPRA,
V_COD_FABRIC,V_COD_SUCUR;
EXIT WHEN C_H_FREC_CLIENTE%NOTFOUND;
SELECT LLAVE_CLIENTE INTO R_FREC_CLIENTE.LLAVE_CLIENTE
FROM D_CLIENTE
WHERE CEDULA=V_CEDULA AND EDAD=V_EDAD AND GENERO = V_GENERO AND ESTRATO =V_ESTRATO;
SELECT LLAVE_LUGAR INTO R_FREC_CLIENTE.LLAVE_LUGAR
FROM D_LUGAR
WHERE COD_CIUDAD = V_COD_CIUDAD AND COD_DPTO = V_COD_DPTO;
SELECT LLAVE_TIEMPO INTO R_FREC_CLIENTE.LLAVE_TIEMPO
FROM D_TIEMPO
WHERE DIA=TO_CHAR(V_FECHA_FACT,'DD') AND MES=TO_CHAR(V_FECHA_FACT,'MM') AND ANO=TO_CHAR(V_FECHA_FACT,'YYYY');
SELECT LLAVE_VENTA INTO R_FREC_CLIENTE.LLAVE_VENTA
FROM D_VENTA
WHERE N_FACT_VEN= V_NUM_FACT AND N_DROG = V_COD_DROGA AND CANTIDAD=V_CANTIDAD AND COD_SUCUR = V_COD_SUCUR;
SELECT LLAVE_DROGA INTO R_FREC_CLIENTE.LLAVE_DROGA
FROM D_DROGA
WHERE VALOR_VENTA = V_VALOR_VENTA AND VALOR_COMPRA = V_VALOR_COMPRA AND COD_LAB = V_COD_FABRIC;
R_FREC_CLIENTE.CANT_CLI:=FARMACIA.F_CANTIDAD_CLIENTE(V_FECHA_FACT,V_CEDULA,V_NUM_FACT,V_COD_DROGA);
INSERT INTO H_FRECUENCIA_CLIENTE
VALUES R_FREC_CLIENTE;
END LOOP;
CLOSE C_H_FREC_CLIENTE ;
COMMIT;
END;