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.
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
0