「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
私は入社21年目の社員です。
ORDS (Oracle REST Data Service)とはOracle DatabaseのHTTPS Webゲートウェイです。その機能には、Oracle Database Actions、データとデータベース用のREST API機能などが含まれています。ORDSを活用することにより、WebアプリからOracle Databaseにアクセスすることができます。
REST API機能を使用するには以下の方法があります。
(1) 公開モジュール
(2) AutoREST (データベースのテーブルに対して自動でREST APIを生成する仕組み)
(3) APEX
(データベース上で動作するWebアプリフレームワーク)
本稿では公開モジュールを使用する方法について紹介させて頂きます。
以下の前提で、ORDSのセットアップについて記載します。
セットアップ手順は以下の通りです。
公開モジュールを作成し、POSTハンドラとGETハンドラを使用する方法について記載します。
前提条件は以下とします。
本稿のモジュール作成後、Oracle SQL Developerのツリーは以下のようになります。
図1. モジュール作成後のツリー
以後、モジュール作成の手順について記載します。
RESTサービスの有効化を行う手順は次の通りです。
成功すると、ツリーに「RESTデータサービス」(図1参照)が追加されます。
公開モジュールの作成手順は以下の通りです。
図2. モジュール作成のサマリー
成功すると、ツリーに対象モジュール(図1 の「mo」)とURIパターン(図1の「uript」)が登録されます。
Oracle DatabaseのPL/SQLプロシージャを実行するためのPOSTハンドラを追加します。
DECLARE nCount number; cSql varchar2(4000); BEGIN select count(table_name) into nCount from user_tables where table_name = 'TEST'; if( nCount = 0 ) then -- テーブルが存在しない cSql := 'CREATE TABLE TEST("PK_ID" NUMBER NOT NULL,"VAL" VARCHAR2(20)' || ', CONSTRAINT TEST_PK PRIMARY KEY ("PK_ID")) '; DBMS_OUTPUT.put_line(cSql); Execute Immediate cSql; -- テーブルを作成 end if; cSql := 'INSERT INTO TEST (PK_ID, VAL) VALUES(' || :PK_ID || ',''' || :VAL|| ''')'; Execute Immediate cSql; -- テーブルへ挿入 :status_code := 201; -- httpレスポンスステータスコード END;
Oracle Databaseのテーブルからレコードを取得するためのGETハンドラを追加します。
SELECT * FROM 社員 WHERE ID = :社員ID; -- :社員IDはパラメータ
今回はORDSの公開モジュールを使用する方法についてご紹介させて頂きました。
公開モジュールを使用することにより、Webアプリなどからオラクルデータベースへアクセスすることができるようになります。本稿が皆様の参考になれば、幸いです。
(K.S.)
関連ページへのリンク
関連するソフテックだより