Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/01/2014, 11:27
KhanS
 
Fecha de Ingreso: noviembre-2012
Ubicación: Spain
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Paquete de pruebas SQL

Hola, tengo un problema con un paquete de pruebas que he creado y no me termina de compilar porque me da este error.

Error(4,11): PLS-00323: subprogram or cursor 'INSERTAR' is declared in a package specification and must be defined in the package body.

El codigo completo es este.
Código SQL:
Ver original
  1. /*prueba empleado*/
  2.  
  3. CREATE OR REPLACE
  4. PACKAGE pruebas_empleado AS
  5.  
  6. PROCEDURE inicializar;
  7. PROCEDURE insertar (prueba_insertar_empleado IN VARCHAR,
  8. wPuesto IN puestos.oid_pue%TYPE,
  9.   wNombre IN empleados.nombre%TYPE,
  10.   wApellidos IN empleados.apellidos%TYPE,
  11.   wSexo IN empleados.sexo%TYPE,
  12.   wNIF IN empleados.nif%TYPE,
  13.   wFNac IN empleados.fnac%TYPE,
  14.   wSalario IN empleados.salario%TYPE,
  15.   wFInicioContrato IN empleados.finiciocontrato%TYPE,
  16.   wFFinContrato IN empleados.ffincontrato%TYPE,
  17.   w_Cuota IN clientes.cuota%TYPE,
  18.   salidaEsperada IN BOOLEAN);
  19. PROCEDURE eliminar (prueba_eliminar_empleado IN VARCHAR,
  20. wPuesto IN puestos.oid_pue%TYPE,
  21.   wNombre IN empleados.nombre%TYPE,
  22.   wApellidos IN empleados.apellidos%TYPE,
  23.   wSexo IN empleados.sexo%TYPE,
  24.   wNIF IN empleados.nif%TYPE,
  25.   wFNac IN empleados.fnac%TYPE,
  26.   wSalario IN empleados.salario%TYPE,
  27.   wFInicioContrato IN empleados.finiciocontrato%TYPE,
  28.   wFFinContrato IN empleados.ffincontrato%TYPE,
  29.   salidaEsperada BOOLEAN);
  30. PROCEDURE actualizar (prueba_actualizar_empleado IN VARCHAR,
  31. wPuesto IN puestos.oid_pue%TYPE,
  32.   wNombre IN empleados.nombre%TYPE,
  33.   wApellidos IN empleados.apellidos%TYPE,
  34.   wSexo IN empleados.sexo%TYPE,
  35.   wNIF IN empleados.nif%TYPE,
  36.   wFNac IN empleados.fnac%TYPE,
  37.   wSalario IN empleados.salario%TYPE,
  38.   wFInicioContrato IN empleados.finiciocontrato%TYPE,
  39.   wFFinContrato IN empleados.ffincontrato%TYPE,
  40.   salidaEsperada BOOLEAN);
  41.  
  42. END pruebas_empleado;
  43.  
  44. /
  45.  
  46. ------- HASTA AQUI TODO SALE BIEN Y NO DA ERROR ----------
  47.  
  48. CREATE OR REPLACE
  49. PACKAGE BODY pruebas_empleado AS
  50.   /*inicializacion*/
  51.   PROCEDURE inicializar AS
  52.   BEGIN
  53.     DELETE FROM EMPLEADOS;
  54.   END inicializar;
  55.  
  56.   /*insertar*/
  57.   PROCEDURE insertar (
  58.   prueba_insertar_empleado VARCHAR,
  59.   wPuesto IN puestos.oid_pue%TYPE,
  60.   wNombre IN empleados.nombre%TYPE,
  61.   wApellidos IN empleados.apellidos%TYPE,
  62.   wSexo IN empleados.sexo%TYPE,
  63.   wNIF IN empleados.nif%TYPE,
  64.   wFNac IN empleados.fnac%TYPE,
  65.   wSalario IN empleados.salario%TYPE,
  66.   wFInicioContrato IN empleados.finiciocontrato%TYPE,
  67.   wFFinContrato IN empleados.ffincontrato%TYPE,
  68.   salidaEsperada BOOLEAN
  69.   ) IS
  70.     salida BOOLEAN := TRUE;
  71.     num PLS_INTEGER;
  72.   BEGIN
  73.     num := 0;
  74.     /*insertar empleado*/
  75.     CREAR_EMPLEADO(wPuesto,wNombre,wApellidos,wSexo,wNIF,wFNac,wSalario,wFInicioContrato);
  76.     /*seleccionar empleado para ver si se ha insertado correctamente*/
  77.  
  78.     SELECT COUNT(*) INTO num FROM EMPLEADOS WHERE NIF=wNIF;
  79.    
  80.     IF (num < 1) THEN
  81.     salida := FALSE;
  82.     END IF;
  83.     COMMIT WORK;
  84.    
  85.     DBMS_OUTPUT.put_line (prueba_insertar_empleado || ':' || ASSERT_EQUALS(salida, salidaEsperada));
  86.     EXCEPTION
  87.     WHEN OTHERS THEN
  88.     DBMS_OUTPUT.put_line(prueba_insertar_empleado || ':' || ASSERT_EQUALS(FALSE, salidaEsperada));
  89.     ROLLBACK;
  90.    
  91.   END insertar;
  92.  
  93.   /*actualizar*/
  94.   PROCEDURE actualizar ( prueba_actualizar_empleado VARCHAR,
  95. wPuesto IN puestos.oid_pue%TYPE,
  96.   wNombre IN empleados.nombre%TYPE,
  97.   wApellidos IN empleados.apellidos%TYPE,
  98.   wSexo IN empleados.sexo%TYPE,
  99.   wNIF IN empleados.nif%TYPE,
  100.   wFNac IN empleados.fnac%TYPE,
  101.   wSalario IN empleados.salario%TYPE,
  102.   wFInicioContrato IN empleados.finiciocontrato%TYPE,
  103.   wFFinContrato IN empleados.ffincontrato%TYPE,
  104.   salidaEsperada BOOLEAN) IS
  105.    
  106.     num PLS_INTEGER;
  107.     salida BOOLEAN := TRUE;
  108.     EMPLEADOS_row EMPLEADOS%ROWTYPE;
  109.    
  110.   BEGIN
  111.       num := 0;
  112.    
  113.     /*Actualizar cliente*/
  114.     UPDATE EMPLEADOS SET FFinContrato =  wFFinContrato WHERE NIF=wnif;
  115.     SELECT * INTO EMPLEADOS_row FROM EMPLEADOS WHERE NIF=wnif;
  116.     IF (EMPLEADOS_row.FFinContrato<> wFFinContrato) THEN
  117.     salida := FALSE;
  118.     END IF;
  119.     COMMIT WORK;
  120.    
  121.    
  122.     DBMS_OUTPUT.put_line(prueba_actualizar_empleado || ':' || ASSERT_EQUALS (salida, salidaEsperada));
  123.     EXCEPTION
  124.     WHEN OTHERS THEN
  125.     DBMS_OUTPUT.put_line(prueba_actualizar_empleado || ':' || ASSERT_EQUALS (FALSE, salidaEsperada));
  126.     ROLLBACK;
  127.    
  128.   END actualizar;
  129.  
  130.   /*eliminar*/
  131. PROCEDURE eliminar ( prueba_eliminar_empleado VARCHAR,
  132.   wPuesto IN puestos.oid_pue%TYPE,
  133.   wNombre IN empleados.nombre%TYPE,
  134.   wApellidos IN empleados.apellidos%TYPE,
  135.   wSexo IN empleados.sexo%TYPE,
  136.   wNIF IN empleados.nif%TYPE,
  137.   wFNac IN empleados.fnac%TYPE,
  138.   wSalario IN empleados.salario%TYPE,
  139.   wFInicioContrato IN empleados.finiciocontrato%TYPE,
  140.   wFFinContrato IN empleados.ffincontrato%TYPE,
  141.   salidaEsperada BOOLEAN) IS
  142.  
  143. salida BOOLEAN := FALSE;
  144. num PLS_INTEGER;
  145.  
  146. BEGIN
  147.   num := 0;
  148.   /*eliminar empleado*/
  149.   DELETE FROM EMPLEADOS WHERE  NIF=wNIF;
  150.  
  151. SELECT COUNT (*) INTO num FROM EMPLEADOS WHERE NIF=wNIF;
  152. IF (num < 1) THEN
  153. salida := FALSE;
  154. ELSE
  155. salida := TRUE;
  156. END IF;
  157. COMMIT WORK;
  158.  
  159. DBMS_OUTPUT.put_line (prueba_eliminar_empleado || ':' || ASSERT_EQUALS (salida, salidaEsperada));
  160. EXCEPTION
  161. WHEN OTHERS THEN
  162. DBMS_OUTPUT.put_line (prueba_eliminar_empleado || ':' || ASSERT_EQUALS (FALSE, salidaEsperada));
  163. ROLLBACK;
  164.  
  165. END eliminar;
  166. END;
  167. /
  168. /*funcion auxiliar ASSERT_EQUALS*/
  169. CREATE OR REPLACE
  170. FUNCTION ASSERT_EQUALS (salida BOOLEAN, salidaEsperada BOOLEAN) RETURN varchar2 AS
  171. BEGIN
  172. IF (salida=salidaEsperada) THEN
  173. RETURN 'exito';
  174. ELSE
  175. RETURN 'fallo';
  176. END IF;
  177. END ASSERT_EQUALS;
[/CODE]


Gracias de antemano y Feliz Año.

Última edición por gnzsoloyo; 08/01/2014 a las 11:48