Oracle SQL Developerには、表の挿入、更新、および削除を簡単に管理できる表APIパッケージを生成するオプションがあります。さらに、さらに変更して必要な変更を追加できます。
Oracle SQL Developer(バージョン18.1)でテーブルAPIパッケージを生成する手順
- Oracle SQL Developerで、データベース・ユーザーに接続し、左側(接続パネル)でテーブル・ノードを展開します。
- テーブルを選択して右クリックし、ショートカットメニューを開きます。
- メニューから[テーブルAPIの生成]を選択します オプションをクリックしてクリックします。
- 選択したテーブルのパッケージスクリプトが生成され、SQLエディターの右側で開きます。
- これで、スクリプトを実行して、データベーススキーマにパッケージを作成できます。
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でテーブルを作成する