18.5.1 REST対応SQLサービス参照の理解
REST対応SQLサービス参照を作成して、リモート・データベースに定義されているSQLまたはPL/SQLを実行します。
- REST対応SQLサービス参照について
REST対応SQLサービス参照を使用して、リモート・データベースに定義されているSQLまたはPL/SQLを実行します。 - REST対応SQLサービス参照の要件
REST対応SQLサービス参照を使用するための最小要件を確認します。 - MySQLサポートについて
MySQLでは、読取り専用APEXコンポーネントのみがサポートされます。 - REST対応SQLサービス参照とデータベース・リンクとの相違点
REST対応SQLサービス参照がデータベース・リンクとどのように異なるかについて説明します。 - エンドポイントURLの動的な移入
「構成プロシージャ」属性で指定されているコールバック・プロシージャを使用して動的にエンドポイントURLのサーバー部分を移入します。 - REST対応SQLサービスのエクスポートおよびインポート
REST対応SQLサービス参照を作成して、リモートOracleデータベースに定義されているSQLまたはPL/SQLを実行します。
親トピック: REST対応SQL参照の管理
18.5.1.1 REST対応SQLサービス参照について
REST対応SQLサービス参照を使用して、リモート・データベースに定義されているSQLまたはPL/SQLを実行します。
Oracle REST Data Services (ORDS)の最小要件を満たすOracle APEXインストール環境では、RESTエンドポイントを介して任意のSQLまたはPL/SQLを実行できます。
開発者は、共有コンポーネント内の名前、エンドポイントURLおよび認証情報を定義して、REST対応SQL参照を作成します。APEXは、RESTを介してSQLまたはPL/SQL問合せをORDSに渡し、自己記述型のJSONレスポンスを返します。JSONオブジェクトには、結果セットのメタデータ、結果データおよびページ区切りの詳細が含まれます。
REST対応SQLサービスはAPEXコンポーネント内にワークスペースレベルで格納されるため、ワークスペース内のすべてのアプリケーションで使用できます。開発者は、対話モード・レポート、対話グリッド、クラシック・レポート、フォーム、マスター・ディテール・フォーム、カレンダ、JETチャート、ツリーおよびPL/SQLプロセスに対して、REST対応SQL参照を使用できます。参照は、カレンダ、JETチャート、ツリーおよびPL/SQLプロセスとともに使用することもできます。
親トピック: REST対応SQLサービス参照の理解
18.5.1.2 REST対応SQLサービス参照の要件
REST対応SQLサービス参照を使用するための最小要件を確認します。
REST対応SQLサービス参照を使用するための要件は次のとおりです。
-
フロントエンドにOracle REST Data Services (ORDS) 23.3以降が含まれているリモートOracle Database。
-
フロントエンドにOracle REST Data Services (ORDS) 23.3以降が含まれるリモートMySQL Database。
『Oracle REST Data Servicesインストレーションおよび構成ガイド』のMySQL DatabaseでのREST対応SQLサービスの使用に関する項および『Oracle REST Data Services開発者ガイド』のREST対応SQLサービスおよびMySQLデータベースに関する項を参照してください。
-
管理者は、ワークスペースレベルまたはインスタンスレベルでRESTfulサービスを有効にする必要があります(『Oracle APEX管理ガイド』のワークスペースのRESTfulサービスの有効化およびパス接頭辞の定義およびインスタンスのRESTfulサービスの有効化を参照)
親トピック: REST対応SQLサービス参照の理解
18.5.1.3 MySQLサポートについて
MySQLでは、読取り専用APEXコンポーネントのみがサポートされます。
次の表に、リモートのMySQLデータベースでREST対応SQLサービス参照を使用する場合のサポートされているAPEXコンポーネントおよびサポートされていない機能を示します。
APEXコンポーネント | サポートされない機能およびコメント |
---|---|
クラシック・レポート |
BLOB列(次を参照)。 |
対話モード・レポート |
|
対話グリッド |
|
ファセット検索およびスマート・フィルタ |
複数値ファセット。 |
カレンダ |
ドラッグ・アンド・ドロップ。 |
フォーム・リージョン |
読取り専用フォームのみがサポートされます。DMLはサポートされていません。 |
チャート |
|
カード |
なし |
列切替えレポート |
なし |
リフロー・レポート |
なし |
共有LOV |
なし |
マップ・リージョン |
MySQLネイティブ・ジオメトリ・タイプはサポートされていません。また、マップ問合せはGeoJSONを返す必要があります。 |
ツリー |
「兄弟順序付け基準」として選択した列は、 |
「コードを実行」ページ・プロセス |
MySQLはサポートされていません。REST対応SQLを使用している場合は、リモート・サーバーのリストから選択できません。 |
自動化 |
MySQLサーバーは自動化問合せでサポートされていますが、自動化アクションおよび「コードを実行」アクション・タイプ内のターゲットとしてサポートされていません。 |
対話モード・レポートおよびクラシック・レポートのBLOB列 |
対話モード・レポートおよびクラシック・レポートのBLOB列は、一般にREST対応SQLをサポートしていないため、サポートされません。BLOB列は、カード・リージョンおよびフォーム表示でサポートされています。 |
親トピック: REST対応SQLサービス参照の理解
18.5.1.4 REST対応SQLサービス参照とデータベース・リンクとの相違点
REST対応SQLサービス参照がデータベース・リンクとどのように異なるかについて説明します。
REST対応SQLサービス参照とデータベース・リンクは、両方とも開発者によるデータへのリモート・アクセスを可能にします。ただし、これらの機能はリモート・データにアクセスする方法が異なります。データベース・リンクとREST対応SQLサービス参照の主な違いは次のとおりです。
- データベース・リンク
- 開発者が同じSQL問合せでリモート表とローカル表を使用できるようにSQLレベルで機能します。
- SQL*Net上で動作するため、インターネット上でクラウド・インスタンスに接続する場合は、問題が発生することがあります。
- REST対応SQLサービス参照
- ワークスペースレベルで機能します。開発者は、REST対応SQLサービスに対する問合せが含まれるAPEXコンポーネントを作成できますが、ローカル表に結合することはできません。
- クラウド環境で、またはインターネット上で使用しやすいようにJSON over HTTP(s)と連動します。
データベース・リンクおよびREST対応SQLの両方がローカル・データベース内の表からデータをフェッチするよりはるかに非効率なネットワークを介してデータをフェッチします。環境に最適な方法を評価する際に、ページ・ビュー・パフォーマンスへの影響を評価し、適切なリフレッシュ・アルゴリズムを使用して常にローカル表でリモート・データをレプリケートすることを検討してください。
親トピック: REST対応SQLサービス参照の理解
18.5.1.5 エンドポイントURLの動的な移入
「構成プロシージャ」属性で指定されているコールバック・プロシージャを使用して動的にエンドポイントURLのサーバー部分を移入します。
「リモート・サーバーの編集」ページで「構成プロシージャ」属性を編集できます。「リモート・サーバーの編集または削除」を参照してください。
フレキシブル・リモート・サーバーは次のように動作します:
- REST対応SQL参照が呼び出されると、APEXエンジンによって「構成プロシージャ」属性が評価されます。
- 「構成プロシージャ」属性に値(データベース内またはPL/SQLコード属性で無名ブロック内に格納されている)がある場合は、APEXエンジンによってそのプロシージャが実行されて、置換パラメータのコレクション(後でエンドポイントURLの変更のために使用される)がフェッチされます。
フレキシブル・リモート・サーバーのユースケース
フレキシブル・リモート・サーバーを使用する一般的なユースケースを次に示します:
-
環境依存性 - 環境がサーバーまたはアプリケーションのデプロイ場所(本番、テストまたは開発インスタンスなど)に左右される場合は、フレキシブル・リモート・サーバーを選択することをお薦めします。環境ごとに「エンドポイントURL」属性を手動で変更するかわりに、APIを使用してそれを動的に変更できます。
ヒント:
APPLICATION_ADMIN.SET_REMOTE_SERVER
プロシージャを使用して、デプロイメント・スクリプトでエンドポイントURLを変更することもできます。『Oracle APEX APIリファレンス』のSET_REMOTE_SERVERプロシージャを参照してください -
アプリケーション・データまたはアプリケーション・ユーザーの依存性 - フレキシブル・リモート・サーバーにより、「構成プロシージャ」属性を使用して動的パラメータに応じて実行時にエンドポイントURLを変更できるようになります。これらの動的パラメータは柔軟であり、構成表、「セッション・ステート」内のアイテム、アプリケーション・アイテムまたは置換アイテムに基づいたものにできます。
構成プロシージャの結果はキャッシュされ、同じリクエスト(ページ・ビューまたはページ処理)内で再使用されます。
ノート:
フレキシブル・リモート・サーバーは、RESTデータ・ソースおよび認証サーバー・タイプ、またはREST対応SQLで使用されるリモート・サーバーの場合のみサポートされています。フレキシブル・リモート・サーバーの構成
フレキシブル・リモート・サーバーを構成するには、REST対応SQLサービスを編集し、「構成プロシージャ」属性にプロシージャ名を入力します。このプロシージャとしては、データベースに格納されているプロシージャの名前、データベース・パッケージ・プロシージャに格納されているプロシージャの名前、またはPL/SQLコード属性に格納されているプロシージャの名前を指定できます。
このプロシージャのシグネチャには、次の2つのタイプのパラメータが必要です:
p_info in apex_plugin.t_remote_server_info
p_config in out apex_plugin.t_remote_server_config
パラメータp_config
には、構成プロシージャで変更できる次の2つのオプション属性があります:
p_config.base_url
-base_url
によってエンドポイントURLを変更します。p_config.substitutions
-substitutions
によって、apex_t_varchar2
を使用して名前と値のペアを割り当てます。Oracle APEXによって、ベースURLまたはエンドポイントURL内の各#NAME#
が置換されます。
これら2つの属性を組み合せて、リモート・サーバーで使用される実際のエンドポイントURLを決定します。
ヒント:
構成プロシージャの例を表示するには、「構成プロシージャ」属性のアイテム・ヘルプを参照してください。次の例では、アプリケーションIDが100の場合にベースURLを変更します:
procedure my_server_config(
p_info in apex_plugin.t_remote_server_info,
p_config out apex_plugin.t_remote_server_config )
is
begin
if v('APP_ID') = 100 then
p_config.base_url := 'http://example100.com';
else
p_config.base_url := 'http://example.com';
end if;
end;
プレースホルダを使用することもできます。このためには、"name"を数字記号(#)で囲み、substitutionsを使用してそれらのプレースホルダ内の値を置き換えます。次の例を検討してください:
procedure my_server_config(
p_info in apex_plugin.t_remote_server_info,
p_config out apex_plugin.t_remote_server_config )
is
begin
if v('APP_ID') = 100 then
p_config.base_url := 'http://example100.com';
else
p_config.base_url := 'http://example.com';
end if;
end;
関連項目:
REST対応SQLサービス参照の編集親トピック: REST対応SQLサービス参照の理解
18.5.1.6 REST対応SQLサービスのエクスポートおよびインポート
REST対応SQLサービス参照を作成して、リモートOracleデータベースに定義されているSQLまたはPL/SQLを実行します。
アプリケーションをエクスポートすると、使用されるREST対応SQL参照が、エクスポート・ファイルに追加されます。アプリケーションをエクスポートして別のワークスペースにインポートする場合は、APEXによって、ターゲット・ワークスペースに同じ静的IDのREST対応SQL参照がすでに含まれているかどうかがチェックされます。REST対応SQL参照がすでに存在している場合、アプリケーションは、既存の参照を使用します。参照が存在しない場合は、ターゲット・ワークスペースに作成されます。
親トピック: REST対応SQLサービス参照の理解