6 Oracle REST Data Services PL/SQLパッケージのリファレンス
6.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; /
6.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; /
6.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; /
6.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
。 - 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; /
6.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; /
6.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; /
6.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; /
6.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');
関連トピック
6.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メタデータへのアクセスをこのオブジェクトに許可する前に、ユーザーの認可を必要とするかどうかを制御します。この値が
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; /
6.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;
6.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リソース・モジュールの公開ステータスを変更します。
パラメータ
使用上の注意
(なし。)
例
次の例では、以前に定義したmy.tickets
という名前のモジュールを公開します。
EXECUTE ORDS.PUBLISH_MODULE(p_module_name=>'my.tickets');
6.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リソース・モジュールの名前またはベース・パス、あるいはその両方を変更できます。
パラメータ
使用上の注意
新しいリソース・モジュールの名前とベース・パスの両方が、有効化されたスキーマ内で一意である必要があります。
例
次の例では、リソース・モジュール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; /
6.17 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; /
6.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
が存在する必要があります。
例
次の例では、既存のロールの名前を変更します。
BEGIN ORDS.RENAME_ROLE( p_role_name=>'Tickets User', p_new_name=>'Legacy Tickets User'); END; /
6.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_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; /
6.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にマップされる方法を構成します。
パラメータ
使用上の注意
DBAユーザーのみが自身で所有していないスキーマのマッピングを更新できます。
例
次の例では、現在のユーザーのBASE_PATH
マッピングを作成します。
BEGIN ORDS.SET_URL_MAPPING( p_url_mapping_type => 'BASE_PATH', p_url_mapping_pattern => 'https://example.com/ords/ticketing' ); END; /