9 Oracle REST Data Services管理PL/SQLパッケージのリファレンス
Oracle REST Data Services(ORDS) ADMIN PL/SQLパッケージには、Oracle REST Data Servicesを使用してRESTfulサービスを開発および管理するための特権ユーザー用サブプログラム(プロシージャおよびファンクション)が含まれています。
データベース・ユーザーは、ORDS_ADMINパッケージを起動する前に、ORDS_ADMINISTRATOR_ROLEデータベース・ロールを付与されている必要があります。
ORDS_ADMINISTRATOR_ROLEロールがADMINユーザーに付与されます。GRANT ORDS_ADMINSTRATOR_ROLE TO ADMIN;ORDS_ADMINパッケージはAUTHID CURRENT_USER権限を除いてORDSパッケージと同等であり、非推奨メソッドがなく、ターゲット・スキーマの指定が必要なすべてのメソッドおよび追加メソッドのp_schemaパラメータがありません。
ORDS_ADMIN.CREATE_ROLE
形式
ORDS_ADMIN.CREATE_ROLE(
p_schema IN ords_schemas.parsing_schema%type,
p_role_name IN sec_roles.name%type);説明
CREATE_ROLEは、指定された名前のOracle REST Data Servicesロールを作成します。
使用上のノート
ロールを作成した後で、Oracle REST Data Services権限にロールを関連付けることができます。
例
次の例では、ロールを作成します。
BEGIN
ORDS_ADMIN.CREATE_ROLE(
p_schema => 'tickets',
p_role_name => 'Tickets User'
};
END;
/ORDS_ADMIN.DEFINE_HANDLER
形式
ORDS_ADMIN.DEFINE_HANDLER(
p_schema IN ords_schemas.parsing_schema%type,
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_admin.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_schema
-
スキーマの名前です。このパラメータは必須です。
- 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_ADMIN.DEFINE_HANDLER(
p_schema => 'tickets',
p_module_name => 'my.tickets',
p_pattern => '.',
p_method => 'POST',
p_mimes_allowed => 'application/json',
p_source_type => ords_admin.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;
/
ORDS_ADMIN.DEFINE_MODULE
形式
ORDS_ADMIN.DEFINE_MODULE( p_schema IN ords_schemas.parsing_schema%type, 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_schema
-
スキーマの名前です。このパラメータは必須です。
- 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_ADMIN.DEFINE_MODULE(
p_schema => 'tickets',
p_module_name => 'my.tickets',
p_base_path => '/my/tickets/'
);
END;
/ORDS_ADMIN.DEFINE_PARAMETER
形式
ORDS_ADMIN.DEFINE_PARAMETER(
p_schema IN ords_schemas.parsing_schema%type,
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_schema
-
スキーマの名前です。このパラメータは必須です。
- 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_ADMIN.DEFINE_PARAMETER(
p_schema => 'tickets',
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_ADMIN.DEFINE_PARAMETER(
p_schema => 'tickets',
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;
/ORDS_ADMIN.DEFINE_PRIVILEGE
形式
ORDS_ADMIN.DEFINE_PRIVILEGE( p_schema IN ords_schemas.parsing_schema%type, 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_ADMIN.DEFINE_PRIVILEGE( p_schema IN ords_schemas.parsing_schema%type, 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_ADMIN.DEFINE_PRIVILEGE( p_schema IN ords_schemas.parsing_schema%type, 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_schema
-
スキーマの名前です。このパラメータは必須です。
- 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_admin.create_role(
p_schema => 'tickets',
p_role_name => 'Tickets User'
};
ords_admin.define_privilege(
p_schema => 'tickets',
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_admin.create_role(
p_schema => 'tickets',
p_role_name => 'Tickets User'
};
ords_admin.define_privilege(
p_schema => 'tickets',
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_admin.create_role(
p_schema => 'tickets',
p_role_name => 'Tickets User'
};
ords_admin.define_privilege(
p_schema => 'tickets',
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;
/ORDS_ADMIN.DEFINE_SERVICE
形式
ORDS_ADMIN.DEFINE_SERVICE(
p_schema IN ords_schemas.parsing_schema%type,
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_admin.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_schema
-
スキーマの名前です。このパラメータは必須です。
- 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つの呼出しで作成します。
例
次の例では、現在のユーザーのチケットを取得するRESTサービスを定義します。
BEGIN
ORDS_ADMIN.DEFINE_SERVICE(
p_schema => 'tickets',
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_ADMIN.DEFINE_SERVICE(
p_schema => 'tickets',
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;
/
ORDS_ADMIN.DEFINE_TEMPLATE
形式
ORDS_ADMIN.DEFINE_TEMPLATE( p_schema IN ords_schemas.parsing_schema%type, 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_ADMIN.DEFINE_TEMPLATE(
p_schema => 'tickets',
p_module_name => 'my.tickets',
p_pattern => '/:id'
);
END;
/
ORDS_ADMIN.DELETE_MODULE
形式
ORDS_ADMIN.DELETE_MODULE( p_schema IN ords_schemas.parsing_schema%type, p_module_name IN ords_modules.name%type);
説明
DELETE_MODULEはリソース・モジュールを削除します。
使用上のノート
モジュールがまだ存在しないか、現在のユーザーがモジュールにアクセス可能な場合、例外は発生しません。
例
次の例では、リソース・モジュールを削除します。
BEGIN
ORDS_ADMIN.DELETE_MODULE(
p_schema => 'tickets',
p_module_name => 'my.tickets'
);
END;
/
ORDS_ADMIN.DELETE_ROLE
形式
ORDS_ADMIN.DELETE_ROLE( p_schema IN ords_schemas.parsing_schema%type, p_role_name IN sec_roles.name%type);
説明
DELETE_ROLEは指定されたロールを削除します。
使用上のノート
これは、ロールとそのロールを参照するすべての権限との間の関連付けも削除します。
ロールがまだ存在しない場合、例外は発生しません。
例
次の例では、ロールを削除します。
BEGIN
ORDS_ADMIN.DELETE_ROLE(
p_schema => 'tickets',
p_role_name => 'Tickets User'
);
END;
/ORDS_ADMIN.DROP_REST_FOR_SCHEMA
形式
ORDS_ADMIN.DROP_REST_FOR_SCHEMA( p_schema ords_schemas.parsing_schema%type);
説明
DROP_REST_FOR_SCHEMAは、関連付けられたスキーマのすべての自動REST Oracle REST Data Servicesメタデータを削除します。
使用上のノート
このプロシージャは、事実上、ORDS.Enable_Schemaプロシージャによって実行されたアクションを元に戻します。
例
次の例では、TICKETSスキーマのすべての自動REST Oracle REST Data Servicesメタデータを削除します。
BEGIN
ORDS_ADMIN.DROP_REST_FOR_SCHEMA(
p_schema => 'tickets'
);
END;
/ORDS_ADMIN.ENABLE_OBJECT
形式
ORDS_ADMIN.ENABLE_OBJECT( p_enabled IN boolean DEFAULT TRUE, p_schema IN ords_schemas.parsing_schema%, 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>
-
使用上のノート
なし。
例
次の例では、CATEGORIESという名前の表を有効化します。
BEGIN
ORDS_ADMIN.ENABLE_OBJECT(
p_schema => 'tickets',
p_object=>'CATEGORIES'
);
END;
/次の例では、TICKETS_FEEDという名前のビューを有効化します。
BEGIN
ORDS_ADMIN.ENABLE_OBJECT(
p_schema => 'tickets',
p_object => 'TICKETS_FEED',
p_object_type => 'VIEW'
);
END;
/ORDS_ADMIN.DROP_REST_FOR_OBJECT
形式
ORDS_ADMIN.DROP_REST_FOR_OBJECT( p_schema IN ords_schemas.parsing_schema%, p_object IN ords_objects.parsing_object%type);
説明
DROP_REST_FOR_OBJECTは、関連付けられたスキーマ・オブジェクトのすべての自動REST Oracle REST Data Servicesメタデータを削除します。
使用上のノート
このプロシージャは、事実上、ORDS_ADMIN.ENABLE_OBJECTプロシージャによって実行されたアクションを元に戻します。
例
次の例では、TICKETSスキーマのCATEGORIES表のすべての自動REST Oracle REST Data Servicesメタデータを削除します。
BEGIN
ORDS_ADMIN.DROP_REST_FOR_OBJECT(
p_schema => 'tickets',
p_object=>'CATEGORIES'
);
END;
/ORDS_ADMIN.ENABLE_SCHEMA
形式
ORDS_ADMIN.ENABLE_SCHEMA p_enabled IN boolean DEFAULT TRUE, p_schema IN ords_schemas.parsing_schema%type, 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_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がユーザーの認可を必要とするかどうかを制御します。
使用上のノート
なし。
例
次の例では、現在のスキーマを有効化します。
BEGIN
ORDS_ADMIN.ENABLE_SCHEMA(
p_schema => 'tickets'
);
END;
/ORDS_ADMIN.PUBLISH_MODULE
形式
ORDS_ADMIN.PUBLISH_MODULE( p_schema IN ords_schemas.parsing_schema%type, 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という名前のモジュールを公開します。
BEGIN
ORDS_ADMIN.PUBLISH_MODULE(
p_schema => 'tickets',
p_module_name => 'my.tickets'
);
END;
/ORDS_ADMIN.RENAME_MODULE
形式
ORDS_ADMIN.RENAME_MODULE( p_schema IN ords_schemas.parsing_schema%type, 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_ADMIN.RENAME_MODULE(
p_schema => 'tickets',
p_module_name =>'my.tickets',
p_new_name=>'old.tickets',
p_new_base_path=>'/old/tickets/');
END;
/ORDS_ADMIN.RENAME_PRIVILEGE
形式
ORDS_ADMIN.RENAME_PRIVILEGE( p_schema IN ords_schemas.parsing_schema%type, p_name IN sec_privileges.name%type, p_new_name IN sec_privileges.name%type);
説明
RENAME_PRIVILEGEは権限の名前を変更します。
使用上のノート
(なし。)
例
次の例では、権限tickets.privilegeの名前をold.tickets.privilegeに変更します。
BEGIN
ORDS_ADMIN.RENAME_PRIVILEGE(
p_schema => 'tickets',
p_name =>'tickets.privilege',
p_new_name=>'old.tickets.privilege');
END;
/ORDS_ADMIN.RENAME_ROLE
形式
ORDS_ADMIN.RENAME_ROLE( p_schema IN ords_schemas.parsing_schema%type, p_role_name IN sec_roles.name%type, p_new_name IN sec_roles.name%type);
説明
RENAME_ROLEはロールの名前を変更します。
使用上のノート
p_role_nameが存在する必要があります。
例
次の例では、既存のロールの名前を変更します。
BEGIN
ORDS_ADMIN.RENAME_ROLE(
p_schema=>'tickets',
p_role_name=>'Tickets User',
p_new_name=>'Legacy Tickets User');
END;
/ORDS_ADMIN.SET_MODULE_ORIGINS_ALLOWED
形式
ORDS_ADMIN.SET_MODULE_ORIGINS_ALLOWED p_schema IN ords_schemas.parsing_schema%type, 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_ADMIN.SET_MODULE_ORIGINS_ALLOWED(
p_schema => 'tickets',
p_module_name => 'my.tickets',
p_origins_allowed => 'http://example.com,https://example.com');
END;
/ORDS_ADMIN.SET_URL_MAPPING
形式
ORDS_ADMIN.SET_URL_MAPPING p_schema IN ords_schemas.parsing_schema%, p_url_mapping_type IN ords_url_mappings.type%type, p_url_mapping_pattern IN ords_url_mappings.pattern%type);
説明
SET_URL_MAPPINGは、指定したスキーマがリクエストURLにマップされる方法を構成します。
パラメータ
使用上のノート
(なし。)
例
次の例では、チケット・ユーザーのBASE_PATHマッピングを作成します。
BEGIN
ORDS_ADMIN.SET_URL_MAPPING(
p_schema => 'tickets',
p_url_mapping_type => 'BASE_PATH',
p_url_mapping_pattern => 'https://example.com/ords/ticketing'
);
END;
/ORDS_ADMIN.ENABLE_HOUSEKEEPING_JOB
形式
ORDS_ADMIN.ENABLE_HOUSEKEEPING_JOB(p_enabled IN boolean DEFAULT TRUE);
説明
ENABLE_HOUSEKEEPING_JOBは、ORDS DBMS_SCHEDULERハウスキーピング・ジョブを作成して有効化または無効化します。非推奨のジョブCLEAN_OLD_ORDS_SESSIONSを置き換えるジョブ名はORDS_HOUSEKEEPING_JOBです。
パラメータ
使用上のノート
ジョブは1時間ごとに実行され、ORDSメタデータ・リポジトリ上でハウスキーピング・アクションが実行されます。コミットは不要です。
例
次の例では、ハウスキーピング・ジョブを有効化します。
EXECUTE ORDS_ADMIN.ENABLE_HOUSEKEEPING_JOB;
ORDS_ADMIN.DROP_HOUSEKEEPING_JOB
形式
ORDS_ADMIN.DROP_HOUSEKEEPING_JOB;
説明
DROP_HOUSEKEEPING_JOBは、ORDS DBMS_SCHEDULERハウスキーピング・ジョブを削除します。ジョブ名はORDS_HOUSEKEEPING_JOBです。
パラメータ
なし。
使用上のノート
コミットは不要です。
例
次の例では、ハウスキーピング・ジョブを削除します。
EXECUTE ORDS_ADMIN.DROP_HOUSEKEEPING_JOB;
ORDS_ADMIN.PERFORM_HOUSEKEEPING
形式
ORDS_ADMIN.PERFORM_HOUSEKEEPING;
説明
PERFORM_HOUSEKEEPINGは、ORDSハウスキーピング・アクションをただちに実行します。次のアクションが実行されます。
- 1日以上経過した期限切れセッションを削除します。
パラメータ
なし。
使用上のノート
コミットは不要です。
例
次の例では、ORDSメタデータ・リポジトリに対してハウスキーピング・アクションを即座に実行します。
EXECUTE ORDS_ADMIN.PERFORM_HOUSEKEEPING;
ORDS_ADMIN.SET_SESSION_DEFAULTS
形式
ORDS_ADMIN.SET_SESSION_DEFAULTS(
p_runtime_user IN varchar2);
説明
データベース・セッションの期間中に適用されるデフォルト値を設定します。
パラメータ
使用上の注意
NULL値は影響しません。値をリセットして再度開始するには、RESET_SESSION_DEFAULTSファンクションを使用します。
例
次の例では、スキーマでRESTが有効または無効の場合に、接続に使用するプロキシ権限の唯一の権限受領者ターゲットとしてHRユーザーを設定します。
BEGIN
ORDS_ADMIN.SET_SESSION_DEFAULTS(
p_runtime_user => 'HR');
END;
/ORDS_ADMIN.RESET_SESSION_DEFAULTS
形式
ORDS_ADMIN.RESET_SESSION_DEFAULTS
説明
セッションのデフォルトを初期値にリセットします。
パラメータ
なし。
使用上の注意
このファンクションを使用してリセットされたデフォルト値を設定するには、SET_SESSION_DEFAULTSファンクションを使用します。
例
次の例では、すべてのセッションのデフォルト値をリセットします。
BEGIN ORDS_ADMIN.RESET_SESSION_DEFAULTS; END; /
ORDS_ADMIN.PROVISION_RUNTIME_ROLE
形式
ORDS_ADMIN.PROVISION_RUNTIME_ROLE(
p_user IN varchar2,
p_proxy_enabled_schemas IN boolean DEFAULT TRUE);説明
ORDSランタイム・ユーザーとして機能できるようにデータベース・ユーザーをプロビジョニングします。
使用上の注意
ORDS_PUBLIC_USERは、ランタイム・ユーザーの例です。ORDS_PUBLIC_USER以外のユーザーを使用するには、ORDS構成に対する追加の変更が必要です。
例
次の例では、HRユーザーにORDSランタイム・ロールをプロビジョニングし、有効なすべてのスキーマの接続に使用するプロキシ権限を付与します。
BEGIN ORDS_ADMIN.PROVISION_RUNTIME_ROLE( p_user => 'HR', p_proxy_enabled_schemas => TRUE ); END; /
ORDS_ADMIN.UNPROVISION_ ROLES
形式
ORDS_ADMIN.UNPROVISION_ROLES(
p_user IN varchar2,
p_administrator_role IN boolean DEFAULT NULL,
p_runtime_role IN boolean DEFAULT NULL);
説明
ORDSデータベース・ロールのプロビジョニングを解除します。
パラメータ
使用上の注意
NULLブール値は、値がTRUEに設定されていないかぎり、TRUEと評価されます。TRUEに設定されている場合、NULL値はFALSEと評価されます。したがって、デフォルトでは、明示的に選択しないかぎり、すべてのロールのプロビジョニングが解除されます。
例
次の例では、HRユーザーからORDS管理者ロールのプロビジョニングを解除します。
BEGIN
ORDS_ADMIN.UNPROVISION_ROLES (
p_user => 'HR',
p_administrator_role => TRUE);
END;
/