sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo generar un paquete API de tabla en Oracle SQL Developer?

En Oracle SQL Developer, hay una opción para generar un paquete API de tabla con el que puede administrar fácilmente la inserción, actualización y eliminación de una tabla. Además, puede modificar más para agregar los cambios requeridos.

Pasos para generar un paquete API de tabla en Oracle SQL Developer (versión 18.1)

  1. En Oracle SQL Developer, conéctese al usuario de la base de datos y en el lado izquierdo (panel de conexión) expanda el nodo de la tabla.
  2. Seleccione la tabla y haga clic derecho sobre ella para abrir el menú contextual.
  3. En el menú, seleccione Generar tabla API opción y haga clic en ella.
  4. Generará el script del paquete para la tabla seleccionada y se abrirá en el lado derecho del editor de SQL.
  5. Ahora puede ejecutar el script para crear el paquete en el esquema de su base de datos.

Puede crear el paquete DML en línea, consulte este enlace: Crear paquete DML en línea

A continuación se muestra un script de paquete de ejemplo para Table API. Generado a partir de la tabla Empleado del esquema HR.

Script de API de tabla de ejemplo

CREATE OR REPLACE PACKAGE EMPLOYEES_tapi
IS
   TYPE EMPLOYEES_tapi_rec IS RECORD (
      JOB_ID           EMPLOYEES.JOB_ID%TYPE,
      EMPLOYEE_ID      EMPLOYEES.EMPLOYEE_ID%TYPE,
      SALARY           EMPLOYEES.SALARY%TYPE,
      HIRE_DATE        EMPLOYEES.HIRE_DATE%TYPE,
      DEPARTMENT_ID    EMPLOYEES.DEPARTMENT_ID%TYPE,
      LAST_NAME        EMPLOYEES.LAST_NAME%TYPE,
      EMAIL            EMPLOYEES.EMAIL%TYPE,
      PHONE_NUMBER     EMPLOYEES.PHONE_NUMBER%TYPE,
      FIRST_NAME       EMPLOYEES.FIRST_NAME%TYPE,
      COMMISSION_PCT   EMPLOYEES.COMMISSION_PCT%TYPE,
      MANAGER_ID       EMPLOYEES.MANAGER_ID%TYPE
   );

   TYPE EMPLOYEES_tapi_tab IS TABLE OF EMPLOYEES_tapi_rec;

   -- insert
   PROCEDURE ins (
      p_JOB_ID           IN EMPLOYEES.JOB_ID%TYPE,
      p_EMPLOYEE_ID      IN EMPLOYEES.EMPLOYEE_ID%TYPE,
      p_SALARY           IN EMPLOYEES.SALARY%TYPE DEFAULT NULL,
      p_HIRE_DATE        IN EMPLOYEES.HIRE_DATE%TYPE,
      p_DEPARTMENT_ID    IN EMPLOYEES.DEPARTMENT_ID%TYPE DEFAULT NULL,
      p_LAST_NAME        IN EMPLOYEES.LAST_NAME%TYPE,
      p_EMAIL            IN EMPLOYEES.EMAIL%TYPE,
      p_PHONE_NUMBER     IN EMPLOYEES.PHONE_NUMBER%TYPE DEFAULT NULL,
      p_FIRST_NAME       IN EMPLOYEES.FIRST_NAME%TYPE DEFAULT NULL,
      p_COMMISSION_PCT   IN EMPLOYEES.COMMISSION_PCT%TYPE DEFAULT NULL,
      p_MANAGER_ID       IN EMPLOYEES.MANAGER_ID%TYPE DEFAULT NULL);

   -- update
   PROCEDURE upd (
      p_JOB_ID           IN EMPLOYEES.JOB_ID%TYPE,
      p_EMPLOYEE_ID      IN EMPLOYEES.EMPLOYEE_ID%TYPE,
      p_SALARY           IN EMPLOYEES.SALARY%TYPE DEFAULT NULL,
      p_HIRE_DATE        IN EMPLOYEES.HIRE_DATE%TYPE,
      p_DEPARTMENT_ID    IN EMPLOYEES.DEPARTMENT_ID%TYPE DEFAULT NULL,
      p_LAST_NAME        IN EMPLOYEES.LAST_NAME%TYPE,
      p_EMAIL            IN EMPLOYEES.EMAIL%TYPE,
      p_PHONE_NUMBER     IN EMPLOYEES.PHONE_NUMBER%TYPE DEFAULT NULL,
      p_FIRST_NAME       IN EMPLOYEES.FIRST_NAME%TYPE DEFAULT NULL,
      p_COMMISSION_PCT   IN EMPLOYEES.COMMISSION_PCT%TYPE DEFAULT NULL,
      p_MANAGER_ID       IN EMPLOYEES.MANAGER_ID%TYPE DEFAULT NULL);

   -- delete
   PROCEDURE del (p_EMPLOYEE_ID IN EMPLOYEES.EMPLOYEE_ID%TYPE);
END EMPLOYEES_tapi;
/

CREATE OR REPLACE PACKAGE BODY EMPLOYEES_tapi
IS
   -- insert
   PROCEDURE ins (
      p_JOB_ID           IN EMPLOYEES.JOB_ID%TYPE,
      p_EMPLOYEE_ID      IN EMPLOYEES.EMPLOYEE_ID%TYPE,
      p_SALARY           IN EMPLOYEES.SALARY%TYPE DEFAULT NULL,
      p_HIRE_DATE        IN EMPLOYEES.HIRE_DATE%TYPE,
      p_DEPARTMENT_ID    IN EMPLOYEES.DEPARTMENT_ID%TYPE DEFAULT NULL,
      p_LAST_NAME        IN EMPLOYEES.LAST_NAME%TYPE,
      p_EMAIL            IN EMPLOYEES.EMAIL%TYPE,
      p_PHONE_NUMBER     IN EMPLOYEES.PHONE_NUMBER%TYPE DEFAULT NULL,
      p_FIRST_NAME       IN EMPLOYEES.FIRST_NAME%TYPE DEFAULT NULL,
      p_COMMISSION_PCT   IN EMPLOYEES.COMMISSION_PCT%TYPE DEFAULT NULL,
      p_MANAGER_ID       IN EMPLOYEES.MANAGER_ID%TYPE DEFAULT NULL)
   IS
   BEGIN
      INSERT INTO EMPLOYEES (JOB_ID,
                             EMPLOYEE_ID,
                             SALARY,
                             HIRE_DATE,
                             DEPARTMENT_ID,
                             LAST_NAME,
                             EMAIL,
                             PHONE_NUMBER,
                             FIRST_NAME,
                             COMMISSION_PCT,
                             MANAGER_ID)
          VALUES (p_JOB_ID,
                  p_EMPLOYEE_ID,
                  p_SALARY,
                  p_HIRE_DATE,
                  p_DEPARTMENT_ID,
                  p_LAST_NAME,
                  p_EMAIL,
                  p_PHONE_NUMBER,
                  p_FIRST_NAME,
                  p_COMMISSION_PCT,
                  p_MANAGER_ID);
   END;

   -- update
   PROCEDURE upd (
      p_JOB_ID           IN EMPLOYEES.JOB_ID%TYPE,
      p_EMPLOYEE_ID      IN EMPLOYEES.EMPLOYEE_ID%TYPE,
      p_SALARY           IN EMPLOYEES.SALARY%TYPE DEFAULT NULL,
      p_HIRE_DATE        IN EMPLOYEES.HIRE_DATE%TYPE,
      p_DEPARTMENT_ID    IN EMPLOYEES.DEPARTMENT_ID%TYPE DEFAULT NULL,
      p_LAST_NAME        IN EMPLOYEES.LAST_NAME%TYPE,
      p_EMAIL            IN EMPLOYEES.EMAIL%TYPE,
      p_PHONE_NUMBER     IN EMPLOYEES.PHONE_NUMBER%TYPE DEFAULT NULL,
      p_FIRST_NAME       IN EMPLOYEES.FIRST_NAME%TYPE DEFAULT NULL,
      p_COMMISSION_PCT   IN EMPLOYEES.COMMISSION_PCT%TYPE DEFAULT NULL,
      p_MANAGER_ID       IN EMPLOYEES.MANAGER_ID%TYPE DEFAULT NULL)
   IS
   BEGIN
      UPDATE EMPLOYEES
         SET JOB_ID = p_JOB_ID,
             SALARY = p_SALARY,
             HIRE_DATE = p_HIRE_DATE,
             DEPARTMENT_ID = p_DEPARTMENT_ID,
             LAST_NAME = p_LAST_NAME,
             EMAIL = p_EMAIL,
             PHONE_NUMBER = p_PHONE_NUMBER,
             FIRST_NAME = p_FIRST_NAME,
             COMMISSION_PCT = p_COMMISSION_PCT,
             MANAGER_ID = p_MANAGER_ID
       WHERE EMPLOYEE_ID = p_EMPLOYEE_ID;
   END;

   -- del
   PROCEDURE del (p_EMPLOYEE_ID IN EMPLOYEES.EMPLOYEE_ID%TYPE)
   IS
   BEGIN
      DELETE FROM EMPLOYEES
            WHERE EMPLOYEE_ID = p_EMPLOYEE_ID;
   END;
END EMPLOYEES_tapi;

¿Cómo usar la API de tabla?

Ahora suponga que desea eliminar un registro de empleado de la tabla Empleados, luego use el procedimiento API del paquete EMPLOYEES_TAPI.DEL de la siguiente manera:

DECLARE 
  P_EMPLOYEE_ID NUMBER;

BEGIN 
  P_EMPLOYEE_ID := 105;

  EMPLOYEES_TAPI.DEL ( P_EMPLOYEE_ID );
  COMMIT; 
END;

Ver también:

  • Crear tabla en Oracle SQL Developer