sql >> Databáze >  >> RDS >> Oracle

Jak vygenerovat balíček API tabulky v Oracle SQL Developer?

V Oracle SQL Developer existuje možnost vygenerovat balíček Table API Package, pomocí kterého můžete snadno spravovat vkládání, aktualizaci a odstraňování pro tabulku. Dále můžete upravit další a přidat požadované změny.

Kroky pro vygenerování balíčku API tabulky v Oracle SQL Developer (verze 18.1)

  1. V aplikaci Oracle SQL Developer se připojte k uživateli databáze a na levé straně (panel připojení) rozbalte uzel tabulky.
  2. Vyberte tabulku a kliknutím pravým tlačítkem na ni otevřete místní nabídku.
  3. Z nabídky vyberte Generovat tabulku API a klikněte na ni.
  4. Vygeneruje skript balíčku pro vybranou tabulku a otevře se v editoru SQL na pravé straně.
  5. Nyní můžete spustit skript pro vytvoření balíčku ve schématu databáze.

Balíček DML můžete vytvořit online, podívejte se na tento odkaz: Vytvořit balíček DML online

Níže je uveden příklad skriptu balíčku pro rozhraní Table API. Generováno z tabulky Zaměstnanci schématu HR.

Ukázkový skript tabulky API

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;

Jak používat Table API?

Nyní předpokládejme, že chcete odstranit záznam zaměstnance z tabulky Zaměstnanci, a poté použijte proceduru API balíčku EMPLOYEES_TAPI.DEL takto:

DECLARE 
  P_EMPLOYEE_ID NUMBER;

BEGIN 
  P_EMPLOYEE_ID := 105;

  EMPLOYEES_TAPI.DEL ( P_EMPLOYEE_ID );
  COMMIT; 
END;

Viz také:

  • Vytvoření tabulky v Oracle SQL Developer
  1. Jak zkontrolovat, zda je databáze SQL poškozena – řešení pro opravu souboru MDF

  2. Úložiště dotazů SQL Server

  3. Jak odstraním z více tabulek pomocí INNER JOIN na serveru SQL

  4. Použití mysql concat() v klauzuli WHERE?