プライマリ・コンテンツに移動
Oracle® REST Data Servicesインストレーション、構成および開発ガイド
リリース3.0.11
E62039-09
目次へ移動
目次
索引へ移動
索引

前
次

5 ORDS PL/SQLパッケージのリファレンス

ORDS PL/SQLパッケージには、Oracle REST Data Servicesを使用してRESTfulサービスを開発するサブプログラム(プロシージャおよび関数)が含まれています。

5.1 ORDS.CREATE_ROLE

形式

ORDS.CREATE_ROLE(
   p_role_name IN sec_roles.name%type);

説明

CREATE_ROLEは、指定された名前のOracle REST Data Servicesロールを作成します。

パラメータ

p_role_name

ロールの名前。

使用上の注意

ロールを作成した後で、Oracle REST Data Services権限にロールを関連付けることができます。

次の例では、ロールを作成します。

EXECUTE ORDS.CREATE_ROLE(p_role_name=>'Tickets User');

5.2 ORDS.CREATE_SERVICE

注意:

ORDS.CREATE_SERVICEは非推奨です。かわりにORDS.DEFINE_SERVICEを使用してください。

形式

ORDS.CREATE_SERVICE(
   p_module_name        IN ords_modules.name%type,
   p_base_path          IN ords_modules.uri_prefix%type,
   p_pattern            IN ords_templates.uri_template%type,
   p_method             IN ords_handlers.method%type DEFAULT 'GET',
   p_source_type        IN ords_handlers.source_type%type 
                              DEFAULT ords.source_type_collection_feed,
   p_source             IN ords_handlers.source%type,
   p_items_per_page     IN ords_modules.items_per_page%type DEFAULT 25,
   p_status             IN ords_modules.status%type DEFAULT 'PUBLISHED',
   p_etag_type          IN ords_templates.etag_type%type DEFAULT 'HASH',
   p_etag_query         IN ords_templates.etag_query%type DEFAULT NULL,
   p_mimes_allowed      IN ords_handlers.mimes_allowed%type DEFAULT NULL,
   p_module_comments    IN ords_modules.comments%type DEFAULT NULL,
   p_template_comments  IN ords_modules.comments%type DEFAULT NULL,
   p_handler_comments   IN ords_modules.comments%type DEFAULT NULL);

説明

RESTfulサービスを作成します。

パラメータ

p_module_name

RESTfulサービス・モジュールの名前です。大/小文字が区別されます。一意である必要があります。

p_base_path

このRESTfulサービスにアクセスする場合に使用されるURIのベースです。例: hr/は、hr/で始まるすべてのURIがこのリソース・モジュールで処理されることを意味します。

p_pattern

リソース・テンプレートの一致パターンです。たとえば、/objects/:object/:id?のパターンは/objects/emp/101と一致(idが101のempリソースのアイテムに対するリクエストに一致)し、/objects/emp/とも一致(:idパラメータにidパラメータがオプションであることを示す? (疑問符)修飾子の注釈があるのでempリソースに対するリクエストに一致)します。

p_method

このハンドラの応答先のHTTPメソッドです。有効な値: GET (リソースの表現を取得します)、POST (新規リソースを作成またはコレクションにリソースを追加します)、PUT (既存のリソースを更新します)、DELETE (既存のリソースを削除します)。

p_source_type

このハンドラのHTTPリクエスト・メソッドです。有効な値は次のとおりです。

  • source_type_collection_feed。SQL問合せを実行し、結果セットをORDS標準JSON表現に変換します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSON

  • source_type_collection_item。1行分のデータをORDS標準JSON表現に返すSQL問合せを1回実行します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSON

  • source_type_media。特定の書式に準拠したSQL問合せを実行し、結果セットを、表現のインターネット・メディア・タイプを識別する付随のHTTP Content-Typeヘッダーで、バイナリ表現に変換します。結果フォーマット: バイナリ

  • source_type_plsql。匿名のPL/SQLブロックを実行し、OUTまたはIN/OUTパラメータをJSON表現に変換します。HTTPメソッドが、DELETE、PUT、POSTの場合のみ使用可能です。結果フォーマット: JSON

  • source_type_query || source_type_csv_query。SQL問合せを実行し、結果セットを、選択したフォーマットに応じて、ORDSレガシーJavaScript Object Notation (JSON)表現またはCSV表現に変換します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSONまたはCSV

  • source_type_query_one_row。1行分のデータをORDSレガシーJSON表現に返すSQL問合せを1回実行します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSON

  • source_type_feed。SQL問合せを実行し、結果をJSONフィード表現に変換します。フィードの各アイテムには、リソースのサマリーと、リソースの完全形式へのハイパーリンクが含まれます。結果セットの各行の最初の列は、その行の一意の識別子である必要があり、path/to/feed/{id}という形式のハイパーリンクを生成するために使用されます(最初の列の値が{id}の値として使用されます)。その行の他の列は、リソースを要約するとみなされ、フィードに含まれます。リソースの完全形式のリソース・テンプレートも、別途定義する必要があります。結果フォーマット: JSON

p_source

選択したHTTPメソッドのソース実装です。

p_items_per_page

リソース・ハンドラHTTP操作GETメソッドのデフォルトのページ区切り、つまり、データベース問合せに基づくJSON書式結果セットのページごとに戻される行の数です。デフォルト: NULL (リソース・モジュール設定に従います)。

p_status

公開ステータスです。有効な値: 'PUBLISHED' (デフォルト)または'NOT_PUBLISHED'。

p_etag_type

リソース・テンプレートによって使用されるエンティティ・タグのタイプです。エンティティ・タグとは、リソースのバージョン識別子として動作するHTTPヘッダーです。エンティティ・タグを使用して、以前取得したリソースの取得を避け、リソースを更新する際にコミット時のロックを実行します。有効な値: 'HASH'、'QUERY'または'NONE'。

  • HASH - Secure HASHとも呼ばれる: 戻されたリソース表現の内容は、特定のリソース・バージョンの一意のフィンガープリントを提供するためのセキュア・ダイジェスト・ファンクションを使用してハッシュ化されています。

  • QUERY - リソース・バージョンを一意に識別する問合せを手動で定義します。手動で定義した問合せによって、リソース表現全体をハッシュ化するより効率的にエンティティ・タグが生成されることが多いです。

  • NONE - エンティティ・タグを生成しません。

p_etag_query

エンティティ・タグの生成に使用される問合せです。

p_mimes_allowed

ハンドラが受け入れるMIMEタイプのカンマ区切りリストです。PUTおよびPOSTにのみ適用されます。

p_module_comments

コメント・テキストです。

p_template_comments

コメント・テキストです。

p_handler_comments

コメント・テキストです。

使用上の注意

リソース・モジュール、リソース・テンプレートおよびリソース・ハンドラを1つの呼出しで作成します。

このプロシージャの使用は推奨されていません。かわりにORDS.DEFINE_SERVICEを使用してください。

次の例では、簡単なサービスを作成します。

BEGIN
  ORDS.CREATE_SERVICE(
    p_module_name => 'my.tickets',
    p_base_path => '/my/tickets/',
    p_pattern => '.',
    p_source => 'select t.id "$.id", t.id, t.title from tickets t' || 
                ' where t.owner = :current_user order by t.updated_on desc'
  );
END;
/

5.3 ORDS.DEFINE_HANDLER

形式

ORDS.DEFINE_HANDLER(
   p_module_name   IN ords_modules.name%type,
   p_pattern       IN ords_templates.uri_template%type,
   p_priority      IN ords_templates.priority%type DEFAULT 0,
   p_etag_type     IN ords_templates.etag_type%type DEFAULT 'HASH',
   p_etag_query    IN ords_templates.etag_query%type DEFAULT NULL,
   p_comments      IN ords_templates.comments%type DEFAULT NULL);

説明

DEFINE_HANDLERはモジュール・ハンドラを定義します。ハンドラがすでに存在する場合、そのハンドラと既存のすべてのハンドラはこの定義によって置き換えられます。それ以外の場合、新しいハンドラが作成されます。

パラメータ

p_module_name

所有RESTfulサービス・モジュールの名前です。大/小文字が区別されます。

p_pattern

所有リソース・テンプレートの一致パターンです。

p_method

このハンドラの応答先のHTTPメソッドです。有効な値: GET (リソースの表現を取得します)、POST (新規リソースを作成またはコレクションにリソースを追加します)、PUT (既存のリソースを更新します)、DELETE (既存のリソースを削除します)。

p_source_type

このハンドラのHTTPリクエスト・メソッドです。有効な値は次のとおりです。

  • source_type_collection_feed。SQL問合せを実行し、結果セットをORDS標準JSON表現に変換します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSON

  • source_type_collection_item。1行分のデータをORDS標準JSON表現に返すSQL問合せを1回実行します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSON

  • source_type_media。特定の書式に準拠したSQL問合せを実行し、結果セットを、表現のインターネット・メディア・タイプを識別する付随のHTTP Content-Typeヘッダーで、バイナリ表現に変換します。結果フォーマット: バイナリ

  • source_type_plsql。匿名のPL/SQLブロックを実行し、OUTまたはIN/OUTパラメータをJSON表現に変換します。HTTPメソッドが、DELETE、PUT、POSTの場合のみ使用可能です。結果フォーマット: JSON

  • source_type_query || source_type_csv_query。SQL問合せを実行し、結果セットを、選択したフォーマットに応じて、ORDSレガシーJavaScript Object Notation (JSON)表現またはCSV表現に変換します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSONまたはCSV

  • source_type_query_one_row。1行分のデータをORDSレガシーJSON表現に返すSQL問合せを1回実行します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSON

  • source_type_feed。SQL問合せを実行し、結果をJSONフィード表現に変換します。フィードの各アイテムには、リソースのサマリーと、リソースの完全形式へのハイパーリンクが含まれます。結果セットの各行の最初の列は、その行の一意の識別子である必要があり、path/to/feed/{id}という形式のハイパーリンクを生成するために使用されます(最初の列の値が{id}の値として使用されます)。その行の他の列は、リソースを要約するとみなされ、フィードに含まれます。リソースの完全形式のリソース・テンプレートも、別途定義する必要があります。結果フォーマット: JSON

p_source

選択したHTTPメソッドのソース実装です。

p_items_per_page

リソース・ハンドラHTTP操作GETメソッドのデフォルトのページ区切り、つまり、データベース問合せに基づくJSON書式結果セットのページごとに戻される行の数です。デフォルト: NULL (リソース・モジュール設定に従います)。

p_mimes_allowed

ハンドラが受け入れるMIMEタイプのカンマ区切りリストです。PUTおよびPOSTにのみ適用されます。

p_comments

コメント・テキストです。

使用上の注意

各HTTPメソッド(ソース・タイプ)に許可されるハンドラは1つのみです。

次の例では、新しいチケットを受け入れる/my/tickets/リソースに対するPOSTハンドラを定義します。

BEGIN
  ORDS.DEFINE_HANDLER(
    p_module_name => 'my.tickets',
    p_pattern => '.',
    p_method  => 'POST',
    p_mimes_allowed => 'application/json',
    p_source_type => ords.source_type_plsql,
    p_source => '
      declare
        l_owner varchar2(255);
        l_payload blob;
        l_id number;
      begin
        l_payload := :body;
        l_owner := :owner;
        if ( l_owner is null ) then
          l_owner := :current_user;
        end if;
        l_id := ticket_api.create_ticket(
          p_json_entity => l_payload,
          p_author => l_owner
        );
        :location := ''./'' || l_id;
        :status := 201;
      end;
      '
  );
END;
/   

5.4 ORDS.DEFINE_MODULE

形式

ORDS.DEFINE_MODULE(
   p_module_name     IN ords_modules.name%type,
   p_base_path       IN ords_modules.uri_prefix%type,
   p_items_per_page  IN ords_modules.items_per_page%type DEFAULT 25,
   p_status          IN ords_modules.status%type DEFAULT 'PUBLISHED',
   p_comments        IN ords_modules.comments%type DEFAULT NULL);

説明

DEFINE_MODULEはリソース・モジュールを定義します。モジュールがすでに存在する場合、そのモジュールと既存のすべてのテンプレートはこの定義によって置き換えられます。それ以外の場合、新しいモジュールが作成されます。

パラメータ

p_module_name

所有RESTfulサービス・モジュールの名前です。大/小文字が区別されます。

p_base_path

このRESTfulサービスにアクセスする場合に使用されるURIのベースです。例: hr/は、hr/で始まるすべてのURIがこのリソース・モジュールで処理されることを意味します。

p_items_per_page

リソース・ハンドラHTTP操作GETメソッドのデフォルトのページ区切り、つまり、データベース問合せに基づくJSON書式結果セットのページごとに戻される行の数です。デフォルト: 25。

p_status

公開ステータスです。有効な値: PUBLISHED (デフォルト)またはNOT_PUBLISHED

p_comments

コメント・テキストです。

使用上の注意

(なし。)

次の例では、簡単なモジュールを作成します。

BEGIN
  ORDS.DEFINE_MODULE(
    p_module_name => 'my.tickets',
    p_base_path => '/my/tickets/'
  );
END;
/

5.5 ORDS.DEFINE_PARAMETER

形式

ORDS.DEFINE_PARAMETER(
   p_module_name        IN ords_modules.name%type,
   p_pattern            IN ords_templates.uri_template%type,
   p_method             IN ords_handlers.method%type,
   p_name               IN ords_parameters.name%type ,
   p_bind_variable_name IN ords_parameters.bind_variable_name%type 
                              DEFAULT NULL,
   p_source_type        IN ords_parameters.source_type%type DEFAULT 'HEADER',
   p_param_type         IN ords_parameters.param_type%type DEFAULT 'STRING',
   p_access_method      IN ords_parameters.access_method%type DEFAULT 'IN',
   p_comments           IN ords_parameters.comments%type DEFAULT NULL);

説明

DEFINE_PARAMETERはモジュール・ハンドラ・パラメータを定義します。パラメータがすでに存在する場合、そのパラメータはこの定義によって置き換えられます。それ以外の場合、新しいパラメータが作成されます。

パラメータ

p_module_name

所有RESTfulサービス・モジュールの名前です。大/小文字が区別されます。

p_pattern

所有リソース・テンプレートの一致パターンです。

p_method

所有ハンドラHTTPメソッドです。有効な値: GET (リソースの表現を取得します)、POST (新規リソースを作成またはコレクションにリソースを追加します)、PUT (既存のリソースを更新します)、DELETE (既存のリソースを削除します)。

p_name

URIテンプレートまたはHTTPヘッダーで呼ばれるパラメータの名前です。有効なSQLパラメータ名ではない名前のマップに使用されます。

p_bind_variable_name

SQLで呼ばれるパラメータの名前です。NULLが指定された場合、パラメータはバインドされません。

p_source_type

パラメータがURIテンプレートまたはHTTPヘッダーで発生するかどうかが識別されるタイプです。有効な値: HEADERRESPONSEURI

p_param_type

パラメータのネイティブ・タイプです。有効な値: STRINGINTDOUBLEBOOLEANLONGTIMESTAMP

p_access_method

パラメータ・アクセス・メソッドです。パラメータが入力値か、出力値か、またはその両方かどうかを示します。有効な値: INOUTINOUT

p_comments

コメント・テキストです。

使用上の注意

すべてのパラメータに同じハンドラの一意の名前および変数名を指定する必要があります。

次の例では、作成されたチケットの場所を格納するPOSTハンドラのアウトバウンド・パラメータを定義します。

BEGIN
  ORDS.DEFINE_PARAMETER(
    p_module_name => 'my.tickets',
    p_pattern => '.',
    p_method => 'POST',
    p_name => 'X-APEX-FORWARD',
    p_bind_variable_name => 'location',
    p_source_type => 'HEADER',
    p_access_method => 'OUT'
  );
END;
/

次の例では、操作のHTTPステータスを格納するPOSTハンドラのアウトバウンド・パラメータを定義します。

BEGIN
  ORDS.DEFINE_PARAMETER(
    p_module_name => 'my.tickets',
    p_pattern => '.',
    p_method => 'POST',
    p_name => 'X-APEX-STATUS-CODE',
    p_bind_variable_name => 'status',
    p_source_type => 'HEADER',
    p_access_method => 'OUT'
  );
END;
/ 

5.6 ORDS.DEFINE_PRIVILEGE

形式

ORDS.DEFINE_PRIVILEGE(
   p_privilege_name    IN sec_privileges.name%type,
   p_roles             IN owa.vc_arr,
   p_patterns          IN owa.vc_arr,
   p_modules           IN owa.vc_arr,
   p_label             IN sec_privileges.label%type DEFAULT NULL,
   p_description       IN sec_privileges.description%type DEFAULT NULL,
   p_comments          IN sec_privileges.comments%type DEFAULT NULL);
or
ORDS.DEFINE_PRIVILEGE(
   p_privilege_name    IN sec_privileges.name%type,
   p_roles             IN owa.vc_arr,
   p_patterns          IN owa.vc_arr,
   p_label             IN sec_privileges.label%type DEFAULT NULL,
   p_description       IN sec_privileges.description%type DEFAULT NULL,
   p_comments          IN sec_privileges.comments%type DEFAULT NULL);
or
ORDS.DEFINE_PRIVILEGE(
   p_privilege_name    IN sec_privileges.name%type,
   p_roles             IN owa.vc_arr,
   p_label             IN sec_privileges.label%type DEFAULT NULL,
   p_description       IN sec_privileges.description%type DEFAULT NULL,
   p_comments          IN sec_privileges.comments%type DEFAULT NULL);

説明

DEFINE_PRIVILEGEはOracle REST Data Services権限を定義します。権限がすでに存在する場合、その権限、既存のすべてのパターン、モジュールおよびロールとのすべての関連付けは、この定義によって置き換えられます。それ以外の場合、新しい権限が作成されます。

パラメータ

p_privilege_name

権限名空白は使用できません。

p_roles

ロールの名前です。このうち少なくとも1つが権限に必要になります。空にできます。この場合、ユーザーの認証は必要ですが、特定のロールは必要ありません。ただし、nullにはできません。認証されていないユーザーはアクセスを拒否されます。

p_patterns

パターンのリストです。

p_modules

現在のスキーマに作成されたモジュールを参照しているモジュール名のリストです。

p_label

エンド・ユーザーに表示されるこのセキュリティ制約の名前です。nullも指定できます。

p_description

この制約によって保護されるリソースの目的の簡単な説明です。

p_comments

コメント・テキストです。

使用上の注意

p_rolesp_patternsおよびp_modulesにはnull値を指定できません。値を渡さない場合は、適切なプロシージャ仕様を選択するか、空のowa.vc_arr値を渡します。

次の例では、ロール、パターンおよびモジュールに結合された権限を作成します。

DECLARE
  l_priv_roles owa.vc_arr;
  l_priv_patterns owa.vc_arr;
  l_priv_modules owa.vc_arr;
BEGIN
  l_priv_roles(1) := 'Tickets User';
  l_priv_patterns(1) := '/my/*';
  l_priv_patterns(2) := '/comments/*';
  l_priv_patterns(3) := '/tickets_feed/*';
  l_priv_patterns(4) := '/tickets/*';
  l_priv_patterns(5) := '/categories/*';
  l_priv_patterns(6) := '/stats/*';

  l_priv_modules(1) := 'my.tickets';

  ords.create_role('Tickets User');

  ords.define_privilege(
    p_privilege_name     => 'tickets.privilege',
    p_roles              => l_priv_roles,
    p_patterns           => l_priv_patterns,
    P_modules            => l_priv_modules,
    p_label              => 'Task Ticketing Access',
    p_description        => 'Provides the ability to create, ' || 
                            'update and delete tickets ' || 
                            'and post comments on tickets'
  );
END;
/

次の例では、ロールおよびパターンに結合された権限を作成します。

DECLARE
  l_priv_roles owa.vc_arr;
  l_priv_patterns owa.vc_arr;
BEGIN
  l_priv_roles(1) := 'Tickets User';
  l_priv_patterns(1) := '/my/*';
  l_priv_patterns(2) := '/comments/*';
  l_priv_patterns(3) := '/tickets_feed/*';
  l_priv_patterns(4) := '/tickets/*';
  l_priv_patterns(5) := '/categories/*';
  l_priv_patterns(6) := '/stats/*';

  ords.create_role('Tickets User');

  ords.define_privilege(
    p_privilege_name     => 'tickets.privilege',
    p_roles              => l_priv_roles,
    p_patterns           => l_priv_patterns,
    p_label              => 'Task Ticketing Access',
    p_description        => 'Provides the ability to create, ' || 
                            'update and delete tickets ' || 
                            'and post comments on tickets'
  );
END;
/

次の例では、ロールに結合された権限を作成します。

DECLARE
  l_priv_roles owa.vc_arr;
BEGIN
  l_priv_roles(1) := 'Tickets User';

  ords.create_role('Tickets User');

  ords.define_privilege(
    p_privilege_name     => 'tickets.privilege',
    p_roles              => l_priv_roles,
    p_label              => 'Task Ticketing Access',
    p_description        => 'Provides the ability to create, ' || 
                            'update and delete tickets ' || 
                            'and post comments on tickets'
  );
END;
/

5.7 ORDS.DEFINE_SERVICE

形式

ORDS.DEFINE_SERVICE(
   p_module_name        IN ords_modules.name%type,
   p_base_path          IN ords_modules.uri_prefix%type,
   p_pattern            IN ords_templates.uri_template%type,
   p_method             IN ords_handlers.method%type DEFAULT 'GET',
   p_source_type        IN ords_handlers.source_type%type 
                             DEFAULT ords.source_type_collection_feed,
   p_source             IN ords_handlers.source%type,
   p_items_per_page     IN ords_modules.items_per_page%type DEFAULT 25,
   p_status             IN ords_modules.status%type DEFAULT 'PUBLISHED',
   p_etag_type          IN ords_templates.etag_type%type DEFAULT 'HASH',
   p_etag_query         IN ords_templates.etag_query%type DEFAULT NULL,
   p_mimes_allowed      IN ords_handlers.mimes_allowed%type DEFAULT NULL,
   p_module_comments    IN ords_modules.comments%type DEFAULT NULL,
   p_template_comments  IN ords_modules.comments%type DEFAULT NULL,
   p_handler_comments   IN ords_modules.comments%type DEFAULT NULL);

説明

DEFINE_SERVICEは、リソース・モジュール、リソース・テンプレートおよびリソース・ハンドラを1つの呼出しで定義します。モジュールがすでに存在する場合、そのモジュールと既存のすべてのテンプレートはこの定義によって置き換えられます。それ以外の場合、新しいモジュールが作成されます。

パラメータ

p_module_name

RESTfulサービス・モジュールの名前です。大/小文字が区別されます。一意である必要があります。

p_base_path

このRESTfulサービスにアクセスする場合に使用されるURIのベースです。例: hr/は、hr/で始まるすべてのURIがこのリソース・モジュールで処理されることを意味します。

p_pattern

リソース・テンプレートの一致パターンです。たとえば、/objects/:object/:id?のパターンは/objects/emp/101と一致し(101のidempリソースにあるアイテムのリクエストと一致)、/objects/emp/とも一致します。(:idパラメータには?修飾子の注釈が付き、これはidパラメータがオプションであることを示すため、empリソースのリクエストとも一致します。)

p_method

このハンドラの応答先のHTTPメソッドです。有効な値: GET (リソースの表現を取得します)、POST (新規リソースを作成またはコレクションにリソースを追加します)、PUT (既存のリソースを更新します)、DELETE (既存のリソースを削除します)。

p_source_type

このハンドラのHTTPリクエスト・メソッドです。有効な値は次のとおりです。

  • source_type_collection_feed。SQL問合せを実行し、結果セットをORDS標準JSON表現に変換します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSON

  • source_type_collection_item。1行分のデータをORDS標準JSON表現に返すSQL問合せを1回実行します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSON

  • source_type_media。特定の書式に準拠したSQL問合せを実行し、結果セットを、表現のインターネット・メディア・タイプを識別する付随のHTTP Content-Typeヘッダーで、バイナリ表現に変換します。結果フォーマット: バイナリ

  • source_type_plsql。匿名のPL/SQLブロックを実行し、OUTまたはIN/OUTパラメータをJSON表現に変換します。HTTPメソッドが、DELETE、PUT、POSTの場合のみ使用可能です。結果フォーマット: JSON

  • source_type_query || source_type_csv_query。SQL問合せを実行し、結果セットを、選択したフォーマットに応じて、ORDSレガシーJavaScript Object Notation (JSON)表現またはCSV表現に変換します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSONまたはCSV

  • source_type_query_one_row。1行分のデータをORDSレガシーJSON表現に返すSQL問合せを1回実行します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSON

  • source_type_feed。SQL問合せを実行し、結果をJSONフィード表現に変換します。フィードの各アイテムには、リソースのサマリーと、リソースの完全形式へのハイパーリンクが含まれます。結果セットの各行の最初の列は、その行の一意の識別子である必要があり、path/to/feed/{id}という形式のハイパーリンクを生成するために使用されます(最初の列の値が{id}の値として使用されます)。その行の他の列は、リソースを要約するとみなされ、フィードに含まれます。リソースの完全形式のリソース・テンプレートも、別途定義する必要があります。結果フォーマット: JSON

p_source

選択したHTTPメソッドのソース実装です。

p_items_per_page

リソース・ハンドラHTTP操作GETメソッドのデフォルトのページ区切り、つまり、データベース問合せに基づくJSON書式結果セットのページごとに戻される行の数です。デフォルト: NULL (リソース・モジュール設定に従います)。

p_status

公開ステータスです。有効な値: PUBLISHED (デフォルト)またはNOT_PUBLISHED

p_etag_type

リソース・テンプレートによって使用されるエンティティ・タグのタイプです。エンティティ・タグとは、リソースのバージョン識別子として動作するHTTPヘッダーです。エンティティ・タグを使用して、以前取得したリソースの取得を避け、リソースを更新する際にコミット時のロックを実行します。有効な値は、HASHQUERYNONEです。

  • HASH (Secure HASHとも呼ばれる): 戻されたリソース表現の内容は、特定のリソース・バージョンの一意のフィンガープリントを提供するためのセキュア・ダイジェスト・ファンクションを使用してハッシュ化されています。

  • QUERY: リソース・バージョンを一意に識別する問合せを手動で定義します。手動で定義した問合せによって、リソース表現全体をハッシュ化するより効率的にエンティティ・タグが生成されることが多いです。

  • NONE: エンティティ・タグを生成しません。

p_etag_query

エンティティ・タグの生成に使用される問合せです。

p_mimes_allowed

ハンドラが受け入れるMIMEタイプのカンマ区切りリストです。PUTおよびPOSTにのみ適用されます。

p_module_comments

コメント・テキストです。

p_template_comments

コメント・テキストです。

p_handler_comments

コメント・テキストです。

使用上の注意

リソース・モジュール、リソース・テンプレートおよびリソース・ハンドラを1つの呼出しで作成します。

非推奨のORDS.CREATE_SERVICEプロシージャのかわりに、このプロシージャを使用してください。

次の例では、現在のユーザーのチケットを取得するRESTサービスを定義します。

BEGIN
  ORDS.DEFINE_SERVICE(
    p_module_name => 'my.tickets',
    p_base_path => '/my/tickets/',
    p_pattern => '.',
    p_source => 'select t.id "$.id", t.id, t.title from tickets t' || 
                ' where t.owner = :current_user order by t.updated_on desc'
  );
END;
/

次の例では、カテゴリによってフィルタされたチケットを取得するRESTサービスを定義します。

BEGIN
  ORDS.DEFINE_SERVICE(
    p_module_name => 'by.category',
    p_base_path => '/by/category/',
    p_pattern => ':category_id',
    p_source => 'select ''../../my/tickets/'' || 
                  t.id "$.id", t.id, t.title' || 
                ' from tickets t, categories c, ticket_categories tc' || 
                ' where c.id = :category_id and c.id = tc.category_id and' || 
                ' tc.ticket_id = t.id order by t.updated_on desc'
  );
END;
/

5.8 ORDS.DEFINE_TEMPLATE

形式

ORDS.DEFINE_TEMPLATE(
   p_module_name  IN ords_modules.name%type,
   p_pattern      IN ords_templates.uri_template%type,
   p_priority     IN ords_templates.priority%type DEFAULT 0,
   p_etag_type    IN ords_templates.etag_type%type DEFAULT 'HASH',
   p_etag_query   IN ords_templates.etag_query%type DEFAULT NULL,
   p_comments     IN ords_templates.comments%type DEFAULT NULL);

説明

DEFINE_TEMPLATEはリソース・テンプレートを定義します。テンプレートがすでに存在する場合、そのテンプレートと既存のすべてのハンドラはこの定義によって置き換えられます。それ以外の場合、新しいテンプレートが作成されます。

パラメータ

p_module_name

所有RESTfulサービス・モジュールの名前です。大/小文字が区別されます。

p_pattern

リソース・テンプレートの一致パターンです。たとえば、/objects/:object/:id?のパターンは/objects/emp/101と一致し(101のidempリソースにあるアイテムのリクエストと一致)、/objects/emp/とも一致します。(:idパラメータには?修飾子の注釈が付き、これはidパラメータがオプションであることを示すため、empリソースのリクエストとも一致します。)

p_priority

リソース・テンプレートを評価する優先順位: 0 (低優先度。デフォルト)から9 (高優先度)です。

p_etag_type

リソース・テンプレートによって使用されるエンティティ・タグのタイプです。エンティティ・タグとは、リソースのバージョン識別子として動作するHTTPヘッダーです。エンティティ・タグを使用して、以前取得したリソースの取得を避け、リソースを更新する際にコミット時のロックを実行します。有効な値は、HASHQUERYNONEです。

  • HASH (Secure HASHとも呼ばれる): 戻されたリソース表現の内容は、特定のリソース・バージョンの一意のフィンガープリントを提供するためのセキュア・ダイジェスト・ファンクションを使用してハッシュ化されています。

  • QUERY: リソース・バージョンを一意に識別する問合せを手動で定義します。手動で定義した問合せによって、リソース表現全体をハッシュ化するより効率的にエンティティ・タグが生成されることが多いです。

  • NONE: エンティティ・タグを生成しません。

p_etag_query

エンティティ・タグの生成に使用される問合せです。

p_comments

コメント・テキストです。

使用上の注意

リソース・テンプレートのパターンは、リソース・モジュールで一意である必要があります。

次の例では、チケットのアイテムを表示するためのリソースを定義します。

BEGIN
  ORDS.DEFINE_TEMPLATE(
    p_module_name => 'my.tickets',
    p_pattern => '/:id'
  );
END;
/

5.9 ORDS.DELETE_MODULE

形式

ORDS.DELETE_MODULE(
   p_module_name  IN ords_modules.name%type);

説明

DELETE_MODULEはリソース・モジュールを削除します。

パラメータ

p_module_name

所有RESTfulサービス・モジュールの名前です。大/小文字が区別されます。

使用上の注意

モジュールがまだ存在しないか、現在のユーザーがモジュールにアクセス可能な場合、例外は発生しません。

次の例では、リソース・モジュールを削除します。

EXECUTE ORDS.DELETE_MODULE(p_module_name=>'my.tickets');

5.10 ORDS.DELETE_PRIVILEGE

形式

ORDS.DELETE_PRIVILEGE(
   p_name  IN sec_privileges.name%type);

説明

DELETE_PRIVILEGEは権限を削除します。

パラメータ

p_name

権限名

使用上の注意

権限がまだ存在しないか、現在のユーザーがモジュールにアクセス可能な場合、例外は発生しません。

次の例では、権限を削除します。

EXECUTE ORDS.DELETE_PRIVILEGE(p_name=>'tickets.privilege');

5.11 ORDS.DELETE_ROLE

形式

ORDS.DELETE_ROLE(
   p_role_name IN sec_roles.name%type);

説明

DELETE_ROLEは指定されたロールを削除します。

パラメータ

p_name

ロールの名前。

使用上の注意

これは、ロールとそのロールを参照するすべての権限との間の関連付けも削除します。

ロールがまだ存在しない場合、例外は発生しません。

次の例では、ロールを削除します。

EXECUTE ORDS.DELETE_ROLE(p_role_name=>'Tickets User');

5.12 ORDS.DROP_REST_FOR_SCHEMA

形式

ORDS.DROP_REST_FOR_SCHEMA(
   p_schema ords_schemas.parsing_schema%type DEFAULT NULL);

説明

DROP_REST_FOR_SCHEMAは、関連付けられたスキーマのすべての自動REST Oracle REST Data Servicesメタデータを削除します。

パラメータ

p_schema

スキーマの名前です。

使用上の注意

このプロシージャは、事実上、ORDS.Enable_Schemaプロシージャによって実行されたアクションを元に戻します。

次の例では、TICKETSスキーマのすべての自動REST Oracle REST Data Servicesメタデータを削除します。

EXECUTE ORDS.DROP_REST_FOR_SCHEMA('tickets');

関連トピック

5.13 ORDS.ENABLE_OBJECT

形式

ORDS.ENABLE_OBJECT(
   p_enabled         IN boolean DEFAULT TRUE,
   p_schema          IN ords_schemas.parsing_schema%type DEFAULT NULL,
   p_object          IN ords_objects.parsing_object%type,
   p_object_type     IN ords_objects.type%type DEFAULT 'TABLE',
   p_object_alias    IN ords_objects.object_alias%type DEFAULT NULL,
   p_auto_rest_auth  IN boolean DEFAULT NULL);

説明

ENABLE_OBJECTは、スキーマで、指定した表またはビューへのOracle REST Data Servicesアクセスを有効にします。

パラメータ

p_enabled

アクセスを有効にするには、TRUE、アクセスを無効にするには、FALSEです。

p_schema

表またはビューのスキーマの名前です。

p_object

表またはビューの名前。

p_object_type

オブジェクトのタイプ: TABLE (デフォルト)またはVIEWです。

p_object_alias

オブジェクトの別名です。

p_auto_rest_auth

Oracle REST Data Servicesメタデータへのアクセスをこのオブジェクトに許可する前に、ユーザーの認可を必要とするかどうかを制御します。

使用上の注意

DBAロールを持つデータベース・ユーザーのみが、現在自分で所有しているオブジェクトを有効化およびアクセスできます。

次の例では、CATEGORIESという名前の表を有効化します。

EXECUTE ORDS.ENABLE_OBJECT(p_object=>'CATEGORIES');

次の例では、TICKETS_FEEDという名前のビューを有効化します。

BEGIN
  ORDS.ENABLE_OBJECT(
    p_object => 'TICKETS_FEED',
    p_object_type => 'VIEW'
  );
END;
/

5.14 ORDS.ENABLE_SCHEMA

形式

ORDS.ENABLE_SCHEMA
   p_enabled             IN boolean DEFAULT TRUE,
   p_schema              IN ords_schemas.parsing_schema%type DEFAULT NULL,
   p_url_mapping_type    IN ords_url_mappings.type%type DEFAULT 'BASE_PATH',
   p_url_mapping_pattern IN ords_url_mappings.pattern%type DEFAULT NULL,
   p_auto_rest_auth      IN boolean DEFAULT NULL);

説明

ENABLE_SCHEMAにより、Oracle REST Data Servicesは指定されたスキーマにアクセスできます。

パラメータ

p_enabled

Oracle REST Data Servicesアクセスを有効にするには、TRUE、Oracle REST Data Servicesアクセスを無効にするには、FALSEです。

p_schema

スキーマの名前です。p_schemaパラメータが省略された場合、現在のスキーマが有効化されます。

p_url_mapping_type

URLマッピング・タイプ: BASE_PATHまたはBASE_URL

p_url_mapping_pattern

URLマッピング・パターンです。

p_auto_rest_auth

スキーマの場合、このスキーマのOracle REST Data Servicesメタデータ・カタログへのアクセスを許可する前に、Oracle REST Data Servicesがユーザーの認可を必要とするかどうかを制御します。

使用上の注意

DBAロールを持つデータベース・ユーザーのみが、自分で所有しているスキーマ以外を有効化または無効化できます。

次の例では、現在のスキーマを有効化します。

EXECUTE ORDS.ENABLE_SCHEMA;

5.15 ORDS.PUBLISH_MODULE

形式

ORDS.PUBLISH_MODULE(
   p_module_name  IN ords_modules.name%type,
   p_status       IN ords_modules.status%type DEFAULT 'PUBLISHED');

説明

PUBLISH_MODULEは、Oracle REST Data Servicesリソース・モジュールの公開ステータスを変更します。

パラメータ

p_module_name

RESTfulサービス・モジュールの現在の名前です。大/小文字が区別されます。

p_status

公開ステータスです。有効な値: PUBLISHED (デフォルト)またはNOT_PUBLISHED

使用上の注意

(なし。)

次の例では、以前に定義したmy.ticketsという名前のモジュールを公開します。

EXECUTE ORDS.PUBLISH_MODULE(p_module_name=>'my.tickets');

5.16 ORDS.RENAME_MODULE

形式

ORDS.RENAME_MODULE(
   p_module_name    IN ords_modules.name%type,
   p_new_name       IN ords_modules.name%type DEFAULT NULL,
   p_new_base_path  IN ords_modules.uri_prefix%type DEFAULT NULL);

説明

RENAME_MODULEによって、Oracle REST Data Servicesリソース・モジュールの名前またはベース・パス、あるいはその両方を変更できます。

パラメータ

p_module_name

RESTfulサービス・モジュールの現在の名前です。大/小文字が区別されます。

p_new_name

RESTfulサービス・モジュールに割り当てられる新しい名前です。大/小文字が区別されます。このパラメータがnullの場合、名前は変更されません。

p_new_base_path

このRESTfulサービスにアクセスする場合に使用されるURIのベースです。例: hr/は、hr/で始まるすべてのURIがこのリソース・モジュールで処理されることを意味します。このパラメータがnullの場合、ベース・パスは変更されません。

使用上の注意

新しいリソース・モジュールの名前とベース・パスの両方が、有効化されたスキーマ内で一意である必要があります。

次の例では、リソース・モジュールmy.ticketsの名前をold.ticketsに変更します。

BEGIN
  ORDS.RENAME_MODULE(
    p_module_name =>'my.tickets',
    p_new_name=>'old.tickets',
    p_new_base_path=>'/old/tickets/');
END;
/

5.17 ORDS.RENAME_PRIVILEGE

形式

ORDS.RENAME_PRIVILEGE(
   p_name      IN sec_privileges.name%type,
   p_new_name  IN sec_privileges.name%type);

説明

RENAME_PRIVILEGEは権限の名前を変更します。

パラメータ

p_name

権限の現在の名前です。

p_new_name

権限に割り当てられる新しい名前です。

使用上の注意

(なし。)

次の例では、権限tickets.privilegeの名前をold.tickets.privilegeに変更します。

BEGIN
  ORDS.RENAME_PRIVILEGE(
    p_name =>'tickets.privilege',
    p_new_name=>'old.tickets.privilege');
END;
/

5.18 ORDS.RENAME_ROLE

形式

ORDS.RENAME_ROLE(
   p_role_name  IN sec_roles.name%type,
   p_new_name   IN sec_roles.name%type);

説明

RENAME_ROLEはロールの名前を変更します。

パラメータ

p_role_name

ロールの現在の名前です。

p_new_name

ロールに割り当てられる新しい名前です。

使用上の注意

p_role_nameが存在する必要があります。

次の例では、既存のロールの名前を変更します。

BEGIN
  ORDS.RENAME_ROLE(
    p_role_name=>'Tickets User',
    p_new_name=>'Legacy Tickets User');
END;
/

5.19 ORDS.SET_MODULE_ORIGINS_ALLOWED

形式

ORDS.SET_MODULE_ORIGINS_ALLOWED
   p_module_name     IN ords_modules.name%type,
   p_origins_allowed IN sec_origins_allowed_modules.origins_allowed%type);

説明

SET_MODULE_ORIGINS_ALLOWEDは、リソース・モジュールの許可されたオリジンを構成します。既存のすべての許可されたオリジンは置き換えられます。

パラメータ

p_module_name

リソース・モジュールの名前です。

p_origins_allowed

URLの接頭辞のカンマ区切りリスト。リストが空の場合、既存のオリジンは削除されます。

使用上の注意

リソース・モジュールの許可されていないオリジンを示す(さらに既存のすべての許可されたオリジンを削除する)には、空のp_origins_allowed値を指定します。

次では、リソース・モジュールmy.ticketsを指定した2つのオリジンに制限します。

BEGIN 
  ORDS.SET_MODULE_ORIGINS_ALLOWED(
    p_module_name     => 'my.tickets',
    p_origins_allowed => 'http://example.com,https://example.com');
END;
/

5.20 ORDS.SET_URL_MAPPING

形式

ORDS.SET_URL_MAPPING
   p_schema              IN ords_schemas.parsing_schema%type DEFAULT NULL,
   p_url_mapping_type    IN ords_url_mappings.type%type,
   p_url_mapping_pattern IN ords_url_mappings.pattern%type);

説明

SET_URL_MAPPINGは、指定したスキーマがリクエストURLにマップされる方法を構成します。

パラメータ

p_schema

マップするスキーマの名前です。デフォルトは現在のユーザーのスキーマです。

p_url_mapping_type

URLマッピング・タイプ: BASE_PATHまたはBASE_URL

p_url_mapping_pattern

URLマッピング・パターンです。

使用上の注意

DBAユーザーのみが自身で所有していないスキーマのマッピングを更新できます。

次の例では、現在のユーザーのBASE_PATHマッピングを作成します。

BEGIN
  ORDS.SET_URL_MAPPING(
    p_url_mapping_type    => 'BASE_PATH',
    p_url_mapping_pattern => 'https://example.com/ords/ticketing'
  );
END;
/