sql >> データベース >  >> RDS >> Oracle

Oracle SQL DeveloperでテーブルAPIパッケージを生成する方法は?

    Oracle SQL Developerには、表の挿入、更新、および削除を簡単に管理できる表APIパッケージを生成するオプションがあります。さらに、さらに変更して必要な変更を追加できます。

    Oracle SQL Developer(バージョン18.1)でテーブルAPIパッケージを生成する手順

    1. Oracle SQL Developerで、データベース・ユーザーに接続し、左側(接続パネル)でテーブル・ノードを展開します。
    2. テーブルを選択して右クリックし、ショートカットメニューを開きます。
    3. メニューから[テーブルAPIの生成]を選択します オプションをクリックしてクリックします。
    4. 選択したテーブルのパッケージスクリプトが生成され、SQLエディターの右側で開きます。
    5. これで、スクリプトを実行して、データベーススキーマにパッケージを作成できます。

    DMLパッケージをオンラインで作成するには、次のリンクを確認してください:DMLパッケージをオンラインで作成

    以下は、テーブルAPIのパッケージスクリプトの例です。 HRスキーマのEmployeeテーブルから生成されます。

    サンプルテーブル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;

    テーブルAPIの使用方法

    ここで、Employeesテーブルからemployeeレコードを削除したいとします。次に、パッケージAPIプロシージャEMPLOYEES_TAPI.DELを次のように使用します。

    DECLARE 
      P_EMPLOYEE_ID NUMBER;
    
    BEGIN 
      P_EMPLOYEE_ID := 105;
    
      EMPLOYEES_TAPI.DEL ( P_EMPLOYEE_ID );
      COMMIT; 
    END;

    関連項目:

    • OracleSQLDeveloperでテーブルを作成する
    1. SQL:最初の文字のみを大文字にする

    2. Microsoft SQL Server –SQLサタデーダラスに参加してください

    3. T-SQLを使用してリンクサーバー上にテーブルを作成する2つの方法

    4. PostgreSQLで日付をユリウス日に変換する