Oracle - Problemas a la hora de crear un procedimiento

 
Vista:

Problemas a la hora de crear un procedimiento

Publicado por Ángel (1 intervención) el 24/02/2021 15:01:40
Tengo que realizar el siguiente procedimiento, la tabla debe ser creada desde una select: Crear un procedimiento que inserte en una tabla el nombre, apellido, nombre de departamento, salario y comisión (actualizada), de todos los empleados que pertenezcan al departamento, cuyo nº, le pasaremos como parámetro. Aquellos empleados que pertenezcan al departamento 20, verán incrementada su comisión en 5000

Toda ayuda es bienvenida! :)
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
sin imagen de perfil

Problemas a la hora de crear un procedimiento

Publicado por anonymous (15 intervenciones) el 26/02/2021 21:58:17
No dices como se llama o llamará tu tabla, pero para crearle desde un select es así:

CREATE TABLE NuevaTabla AS (SELECT * FROM TABLAEXISTENTE); --Cambia NuevaTabla y TABLAEXISTENTE por las que corresponda

En cuanto al procedimiento como no se sabe la estructura de la tabla, y no mencionas si Departamentos es otra tabla relacionada, lo hice suponiendo que la tabla se llama TBL_EMPLEADOS, la cual tiene foránea con TBL_DEPARMENTOS y que su PK es Empleado_ID.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
CREATE OR REPLACE PROCEDURE SPR_IU_Salario(
p_EMPLEADO_ID	  			IN TBL_EMPLEADOS.EMPLEADO_ID%TYPE,
p_NOMBRES  		  		IN TBL_EMPLEADOS.NOMBRES%TYPE,
p_APELLIDOS		  		IN TBL_EMPLEADOS.APELLIDOS%TYPE,
p_SALARIO  		  			IN TBL_EMPLEADOS.SALARIO%TYPE,
p_COMISION 		  			IN TBL_EMPLEADOS.COMISION%TYPE,
p_DEPARTAMENTO_ID			IN TBL_EMPLEADOS.DEPARTAMENTO_ID%TYPE,
p_RESULTADO             	                OUT NUMERIC )
 
IS
 
  v_Comision  TBL_EMPLEADOS.COMISION%TYPE:= 0;
 
 
BEGIN
 
   p_RESULTADO := 0;
 
  IF (p_DEPARTAMENTO_ID = 20) THEN
      v_Comision:= 5000;
  ELSE
  	  v_Comision:= p_COMISION;
  END IF;
 
  UPDATE TBL_EMPLEADOS SET
  NOMBRES 			   = p_NOMBRES,
  APELLIDOS			   = p_APELLIDOS,
  SALARIO			   = p_SALARIO,
  COMISION			   = v_Comision
  WHERE EMPLEADO_ID    = p_EMPLEADO_ID;
 
  COMMIT;
 
 EXCEPTION
        WHEN OTHERS THEN
        p_RESULTADO := SUBSTR(SQLCODE,1,20);
 
END SPR_IU_Salario;

Modifica y adapta tú según consideres
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