Oracle - Procedures sin parámetros

   
Vista:
Imágen de perfil de Jean

Procedures sin parámetros

Publicado por Jean (1 intervención) el 12/11/2014 03:37:36
Buenas Noches,
He seguido este foro desde hace un tiempo y sé que puedo contar con uds para que puedan ayudarme en este nuevo mundo de oracle.
La consulta es: He realizado un procedure sin parámetros para actualizar el salario de la tabla EMP de acuerdo a la cantidad de empleados por departamento.

Create or replace procedure P_SALARIO(pMsj out varchar2)
is
v1 numeric;
begin
-- Cuenta empleados por departamento --
select COUNT(deptno) into v1
from emp
group by deptno;

-- Lógica --
-- Más de 3 empleados --
If v1>3 then
Update emp set sal = sal*1.4;
pMsj:= 'Se actualizó con éxito';
-- Entre 2 y 3 empleados --
ElsIf v1>=2 then
Update emp set sal = sal*1.2;
pMsj:= 'Se actualizó con éxito';
-- De 0 a 1 empleados --
Else
Update emp set sal = sal*1.1;
pMsj:= 'Se actualizó con éxito';
-- Graba --
commit;
End if;
Exception
when others then
pMsj:= 'Error en procedure';
end;

y cuando intento llamarlo de esta manera

declare
vMsj varchar2(100);
begin
P_SALARIO(vMsj);
--
dbms_output.put_line(vMsj);
exception
when others then
dbms_output.put_line('Error de llamado');
end;

Me sale el mensaje del procedure: Error en procedure.

Me podrían ayudar? se los agradecería mucho.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Procedures sin parámetros

Publicado por luis (232 intervenciones) el 12/11/2014 20:18:48
Hola Jean


Al ejecutar el siguiente select:

select COUNT(deptno) into v1
from emp
group by deptno;


retorna mas de 1 registro, no puedes hacer un "select into" de varios registros, solo de 1.
Si tienes 5 "Nro de departamentos" registrados en la tabla te retornara 5 registros pues lo agrupas por deptno.

Modifica tu select y prueba cada select antes de incluirlo en un procedimiento.

Saludos

Luis Pablo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar