4 ORDS PL/SQLパッケージのリファレンス
4.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問合せを実行し、結果セットをOracle REST Data Services標準JSON表現に変換します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSON
- 
                                 source_type_collection_item。1行分のデータをOracle REST Data Services標準JSON表現に戻すSQL問合せを実行します。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問合せを実行し、選択した形式に応じて、結果セットをOracle REST Data ServicesレガシーJavaScript Object Notation (JSON)表現またはCSV表現に変換します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSONまたはCSV
- 
                                 source_type_query_one_row。1行分のデータをOracle REST Data ServicesレガシーJSON表現に戻すSQL問合せを実行します。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;
/
4.3 ORDS.DEFINE_HANDLER
形式
ORDS.DEFINE_HANDLER(
p_module_name      IN ords_modules.name%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_handlers.items_per_page%type DEFAULT NULL,
p_mimes_allowed    IN ords_handlers.mimes_allowed%type DEFAULT NULL,
p_comments         IN ords_handlers.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問合せを実行し、結果セットをOracle REST Data Services標準JSON表現に変換します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSON
- 
                                 source_type_collection_item。1行分のデータをOracle REST Data Services標準JSON表現に戻すSQL問合せを実行します。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問合せを実行し、選択した形式に応じて、結果セットをOracle REST Data ServicesレガシーJavaScript Object Notation (JSON)表現またはCSV表現に変換します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSONまたはCSV
- 
                                 source_type_query_one_row。1行分のデータをOracle REST Data ServicesレガシーJSON表現に戻すSQL問合せを実行します。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;
/   
4.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;
/
4.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ヘッダーで発生するかどうかが識別されるタイプです。有効な値: HEADER、RESPONSE、URI。
- p_param_type
- 
                           パラメータのネイティブ・タイプです。有効な値: STRING、INT、DOUBLE、BOOLEAN、LONG、TIMESTAMP、RESULTSET。
- p_access_method
- 
                           パラメータ・アクセス・メソッドです。パラメータが入力値か、出力値か、またはその両方かどうかを示します。有効な値: IN、OUT、INOUT。
- 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;
/ 
4.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_roles、p_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;
/
4.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のidでempリソースにあるアイテムのリクエストと一致)、/objects/emp/とも一致します。(:idパラメータには?修飾子の注釈が付き、これはidパラメータがオプションであることを示すため、empリソースのリクエストとも一致します。)
- p_method
- 
                           このハンドラの応答先のHTTPメソッドです。有効な値: GET(リソースの表現を取得します)、POST(新規リソースを作成またはコレクションにリソースを追加します)、PUT(既存のリソースを更新します)、DELETE(既存のリソースを削除します)。
- p_source_type
- 
                           このハンドラのHTTPリクエスト・メソッドです。有効な値は次のとおりです。 - 
                                 source_type_collection_feed。SQL問合せを実行し、結果セットをOracle REST Data Services標準JSON表現に変換します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSON
- 
                                 source_type_collection_item。1行分のデータをOracle REST Data Services標準JSON表現に戻すSQL問合せを実行します。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問合せを実行し、選択した形式に応じて、結果セットをOracle REST Data ServicesレガシーJavaScript Object Notation (JSON)表現またはCSV表現に変換します。HTTPメソッドがGETの場合に使用可能です。結果フォーマット: JSONまたはCSV
- 
                                 source_type_query_one_row。1行分のデータをOracle REST Data ServicesレガシーJSON表現に戻すSQL問合せを実行します。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.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;
/
4.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のidでempリソースにあるアイテムのリクエストと一致)、/objects/emp/とも一致します。(:idパラメータには?修飾子の注釈が付き、これはidパラメータがオプションであることを示すため、empリソースのリクエストとも一致します。)
- p_priority
- 
                           リソース・テンプレートを評価する優先順位: 0 (低優先度。デフォルト)から9 (高優先度)です。 
- p_etag_type
- 
                           リソース・テンプレートによって使用されるエンティティ・タグのタイプです。エンティティ・タグとは、リソースのバージョン識別子として動作するHTTPヘッダーです。エンティティ・タグを使用して、以前取得したリソースの取得を避け、リソースを更新する際にコミット時のロックを実行します。有効な値は、 HASH、QUERY、NONEです。- 
                                 HASH(Secure HASHとも呼ばれる): 戻されたリソース表現の内容は、特定のリソース・バージョンの一意のフィンガープリントを提供するためのセキュア・ダイジェスト・ファンクションを使用してハッシュ化されています。
- 
                                 QUERY: リソース・バージョンを一意に識別する問合せを手動で定義します。手動で定義した問合せによって、リソース表現全体をハッシュ化するより効率的にエンティティ・タグが生成されることが多いです。
- 
                                 NONE: エンティティ・タグを生成しません。
 
- 
                                 
- p_etag_query
- 
                           エンティティ・タグの生成に使用される問合せです。 
- p_comments
- 
                           コメント・テキストです。 
使用上のノート
リソース・テンプレートのパターンは、リソース・モジュールで一意である必要があります。
例
次の例では、チケットのアイテムを表示するためのリソースを定義します。
BEGIN
  ORDS.DEFINE_TEMPLATE(
    p_module_name => 'my.tickets',
    p_pattern => '/:id'
  );
END;
/
4.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メタデータを削除します。
使用上のノート
このプロシージャは、事実上、ORDS.Enable_Schemaプロシージャによって実行されたアクションを元に戻します。
                     
例
次の例では、TICKETSスキーマのすべての自動REST Oracle REST Data Servicesメタデータを削除します。
EXECUTE ORDS.DROP_REST_FOR_SCHEMA('tickets');関連トピック
4.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
- 
                           オブジェクトのタイプ。有効な値は、 FUNCTION、MVIEW、PACKAGE、PROCEDURE、TABLE(デフォルト)またはVIEWです。
- p_object_alias
- 
                           オブジェクトの別名です。 
- p_auto_rest_auth
- 
                           Oracle REST Data Servicesメタデータへのアクセスをこのオブジェクトに許可する前に、ユーザーの認可を必要とするかどうかを制御します。この値が TRUEの場合、サービスは次のロールによって保護されます。- 
                                 oracle.dbtools.autorest.any.schema
- 
                                 oracle.dbtools.role.autorest.<SCHEMANAME>.<OBJECTNAME>
 
- 
                                 
使用上のノート
DBAロールを持つデータベース・ユーザーのみが、現在自分で所有しているオブジェクトを有効化およびアクセスできます。
例
次の例では、CATEGORIESという名前の表を有効化します。
EXECUTE ORDS.ENABLE_OBJECT(p_object=>'CATEGORIES');
次の例では、TICKETS_FEEDという名前のビューを有効化します。
BEGIN
  ORDS.ENABLE_OBJECT(
    p_object => 'TICKETS_FEED',
    p_object_type => 'VIEW'
  );
END;
/
4.14 ORDS.DROP_REST_FOR_OBJECT
形式
ORDS.DROP_REST_FOR_OBJECT( p_object ords_objects.parsing_object%type);
説明
DROP_REST_FOR_OBJECTは、関連付けられたスキーマ・オブジェクトのすべての自動REST Oracle REST Data Servicesメタデータを削除します。
使用上のノート
このプロシージャは、事実上、ORDS.ENABLE_OBJECTプロシージャによって実行されたアクションを元に戻します。
                     
例
次の例では、現在のユーザーのCATEGORIES表のすべての自動REST Oracle REST Data Servicesメタデータを削除します。
BEGIN
  ORDS.DROP_REST_FOR_OBJECT(
    p_object=>'CATEGORIES'
  );
END;
/4.15 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;
4.16 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リソース・モジュールの公開ステータスを変更します。
パラメータ
使用上のノート
(なし。)
例
次の例では、以前に定義したmy.ticketsという名前のモジュールを公開します。
                     
EXECUTE ORDS.PUBLISH_MODULE(p_module_name=>'my.tickets');
4.17 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リソース・モジュールの名前またはベース・パス、あるいはその両方を変更できます。
パラメータ
使用上のノート
新しいリソース・モジュールの名前とベース・パスの両方が、有効化されたスキーマ内で一意である必要があります。
例
次の例では、リソース・モジュール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;
/
4.18 ORDS.RENAME_PRIVILEGE
形式
ORDS.RENAME_PRIVILEGE( p_name IN sec_privileges.name%type, p_new_name IN sec_privileges.name%type);
説明
RENAME_PRIVILEGEは権限の名前を変更します。
使用上のノート
(なし。)
例
次の例では、権限tickets.privilegeの名前をold.tickets.privilegeに変更します。
                     
BEGIN
  ORDS.RENAME_PRIVILEGE(
    p_name =>'tickets.privilege',
    p_new_name=>'old.tickets.privilege');
END;
/
4.19 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が存在する必要があります。
                     
例
次の例では、既存のロールの名前を変更します。
BEGIN
  ORDS.RENAME_ROLE(
    p_role_name=>'Tickets User',
    p_new_name=>'Legacy Tickets User');
END;
/
4.20 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_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;
/
4.21 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にマップされる方法を構成します。
パラメータ
使用上のノート
DBAユーザーのみが自身で所有していないスキーマのマッピングを更新できます。
例
次の例では、現在のユーザーのBASE_PATHマッピングを作成します。
                     
BEGIN
  ORDS.SET_URL_MAPPING(
    p_url_mapping_type    => 'BASE_PATH',
    p_url_mapping_pattern => 'https://example.com/ords/ticketing'
  );
END;
/
4.22 ORDS.SET_SESSION_DEFAULTS
形式
ORDS.SET_SESSION_DEFAULTS(
       p_runtime_user IN varchar2);説明
データベース・セッションの期間中に適用されるデフォルトを設定します。
パラメータ
使用上のノート
NULL値は影響しません。値をリセットして再度開始するには、RESET_SESSION_DEFAULTSを使用します。
                     
例
次の例では、スキーマでRESTが有効または無効の場合に、接続に使用するプロキシ権限の唯一の権限受領者ターゲットとしてHRユーザーを設定します。
                     
BEGIN
  ORDS.SET_SESSION_DEFAULTS(
    p_runtime_user => 'HR');
END;
/
4.23 ORDS.RESET_SESSION_DEFAULTS
形式
ORDS.RESET_SESSION_DEFAULTS;
説明
セッションのデフォルトを初期値にリセットします。
パラメータ
なし。
使用上のノート
このファンクションを使用してリセットされたデフォルト値を設定するには、SET_SESSION_DEFAULTSファンクションを使用します。
                     
例
次の例では、すべてのセッションのデフォルト値をリセットします。
BEGIN 
      ORDS.RESET_SESSION_DEFAULTS;
END;
/