Problema al llamar funcion PL/SQL
Publicado por Juan Tomas (1 intervención) el 14/04/2018 11:11:39
Buenas, tengo un problema con una funcion que cuando la llamo me da error
pero la funcion por lo que creo esta bien creada os dejo el codigo a ver si podeis ayudarme:
Cree una función a la que se le pase como parámetros el
idAportacion y una participación-% con el que participa en dicha
aportación- y nos devuelva el valor monetario de la misma
(precioUnitario*cantidad*participacion/100).
create or replace FUNCTION porcpart(id traen.idAportacion%type, participacionP traen.participacion%type)
RETURN NUMBER
IS
v_preciounitario NUMBER(3);
v_cantidad NUMBER(3);
v_participacion traen.participacion%type;
preciototal NUMBER(3);
BEGIN
SELECT ap.preciounitario, ap.cantidad, t.participacion
INTO v_preciounitario, v_cantidad, v_participacion
FROM aportaciones ap, traen t
WHERE t.idAportacion = id;
preciototal := v_preciounitario*v_cantidad*participacionP/100;
RETURN preciototal;
END;
Cuando hago un
SELECT porcpart(2,20) FROM traen, aportaciones;
me dice que el numero de filas es superior, gracias de antemano
Un saludo.
pero la funcion por lo que creo esta bien creada os dejo el codigo a ver si podeis ayudarme:
Cree una función a la que se le pase como parámetros el
idAportacion y una participación-% con el que participa en dicha
aportación- y nos devuelva el valor monetario de la misma
(precioUnitario*cantidad*participacion/100).
create or replace FUNCTION porcpart(id traen.idAportacion%type, participacionP traen.participacion%type)
RETURN NUMBER
IS
v_preciounitario NUMBER(3);
v_cantidad NUMBER(3);
v_participacion traen.participacion%type;
preciototal NUMBER(3);
BEGIN
SELECT ap.preciounitario, ap.cantidad, t.participacion
INTO v_preciounitario, v_cantidad, v_participacion
FROM aportaciones ap, traen t
WHERE t.idAportacion = id;
preciototal := v_preciounitario*v_cantidad*participacionP/100;
RETURN preciototal;
END;
Cuando hago un
SELECT porcpart(2,20) FROM traen, aportaciones;
me dice que el numero de filas es superior, gracias de antemano
Un saludo.
Valora esta pregunta
0