はじめに
Oracle Cloud Infrastructure(OCI)のAutonomous Database (ADB)でテーブルを作成した際に、そのテーブルをAPEXでも参照や変更する方法についてご紹介します。
アクセス権限の付与
今回ご紹介する方法としては、APEXのユーザーに対象のテーブルのアクセス権限を付与することです。
アクセス権限の付与に関しては、ADBやAPEXに限った話ではなく、データベースに従事する方であれば基本的な操作になります。
■ 前提条件
・ADB上で対象のテーブルを作成
ADMINユーザーで対象のテーブル「Test_Table」を作成しています。
カラムは、Test_ID(CHAR型)、Name(VARCHAR型)で設定しています。
・APEXでワークスペースを作成
APEXでワークスペース作成時のユーザー名を「TestUser」と設定しています。
1. アクセス権の付与
今回は、ADBの機能のDatabase ActionsでSQL文を実行し、アクセス権の付与を行っていきます。
まず、OCIのコンソール上で利用するADBのDatabase Actionsを開きます。

次に対象のテーブルへのアクセス権限を保有するユーザーを選択し、ワークシートにSQLを入力していきます。

アクセス権限を付与するためのSQL文は以下の通りです。
GRANT <権限名> ON <オブジェクト名>
TO <スキーマ名>;
また権限名については以下を参照してください。
| 権限名 | 説明 |
|---|---|
| SELECT | データの参照 |
| UPDATE | データの更新 |
| INSERT | データの追加 |
| DELETE | データの削除 |
| REFERENCES | 他テーブルの外部キーを作成 |
| ALL | 全ての操作 |
今回はAPEX上で、別スキーマのADBの表からデータを 参照・更新・追加 するための権限を付与していきます。
ここで注意する点としては、APEXでワークスペースを作成するときに入力したユーザーへ権限を付与するのではなく、そのユーザー名の接頭辞に「WKSP_」と付いたユーザーに権限を付与する必要があります。
APEXのユーザーの詳細については、以下の記事の「APEXで使用されるユーザーについて」の項をご参照ください。
上記を元にSQL文を作成し、Database ActionsでSQL文を実行していきます。
GRANT SELECT, UPDATE, INSERT ON ADMIN.Test_Table
TO WKSP_TestUser;
2. APEX上で表へのアクセスができるか確認する
APEXのワークスペースを開き、SQLワークショップ > SQLコマンド を開きます。

以下のINSERT文を実行し、「ADMIN」ユーザーの「Test_ID」表にデータを追加します。
INSERT INTO ADMIN.Test_Table VALUES(1, 'APEX');
INSERT文が正しく実行されているか確認するために、SELECT文でデータを確認します。
SELECT * FROM ADMIN.Test_Table;
次にUPDATE文で格納されているデータを更新します。
UPDATE ADMIN.Test_Table SET test_id = 2, name = 'Update_Apex' WHERE test_id = 1;
再度SELECT文で確認してみると、データが更新されていることが分かります。

おわりに
今回はAPEXユーザーに権限を付与した後に、SQLコマンドで実際にADB上の他のテーブルへのアクセスを確認しましたが、APEXのアプリケーションでも同様に参照・追加・更新ができるようになっています。
APEXでアプリケーションを作成する上での一助になれば幸いです。
