2021年4月6日火曜日

APEXからオブジェクト・ストレージをPL/SQL SDKで操作する(2) - バケットの操作

これから、バケットの作成、削除、一覧表示の機能を実装します。

バケットの一覧を取得するパイプライン表関数list_bucketsを定義します。コードは以下になります。

実行にはSQLワークショップのSQLスクリプトを使用します。

メニューのSQLワークショップよりSQLスクリプトを実行します。


登録済みのSQLスクリプトの一覧画面より、作成をクリックします。


スクリプト名list_bucketsと入力し、本文PL/SQLコードを貼り付けて、実行をクリックします。


即時実行をクリックします。


初回実行時は、最初の2行はエラーになります。残りの3行が成功していれば、パイプライン表関数list_bucketsが作成され利用可能になっています。


これからバケットの一覧、作成、更新、削除を行うページを作成します。

アプリケーション・ビルダーから作成中のアプリケーションを開き、ページの作成を実行します。


対話モード・レポートをクリックします。


ページ定義名前バケット一覧とします。フォーム・ページを含めるONに変更し、フォーム・ページ名バケット操作とします。フォーム・ページ・モードとしてモーダル・ダイアログを選択します。

データ・ソースソース・タイプSQL問合せを選択し、以下のSELECT文を記述します。
select * from list_buckets
(
    p_namespace_name => :G_NAMESPACE_NAME
    , p_compartment_id => :G_COMPARTMENT_ID
    , p_region => :G_REGION
    , p_credential_name => :G_CREDENTIAL_NAME
)
ナビゲーションブレッドクラムの使用ナビゲーションの使用はともにONにします。

以上を設定し、へ進みます。


主キー列1としてID(Varchar2)を選択し、ページの作成を実行します。


レポートとフォームのページが作成されます。レポートのページを実行してみます。


レポートのページが開くことを確認します。


バケットが一覧されるようになったので、続いてバケットの作成/更新/削除を行うためにフォームのページを変更します。

バケット操作のページをページ・デザイナで開き、左ペインでプロセス・ビューを表示します。フォームの処理を行うプロセス - プロセス・フォームバケット操作を選択し、設定を変更します。

ターゲット・タイプをRegion SourceからPL/SQL Codeに変更し、以下のPL/SQLコードを挿入/更新/削除するPL/SQLコードに記述します。失われた更新の防止OFF行のロックNoに変更します。



入力を容易にするため、ネームスペース名とコンパートメントIDについては、置換文字列がデフォルトになるように設定します。

ページ・アイテムP3_NAMESPACEを選択し、デフォルトタイプアイテムアイテムとしてG_NAMESPACE_NAMEを入力します。


同様にページ・アイテムP3_COMPARTMENT_IDデフォルトG_COMPARTMENT_IDとします。


実装している操作は、実質的にはバケットの作成と削除です。更新はコード上はありますが、動作の確認ができるような処理は実装していません。

バケットの作成をしてみます。入力するのはNameだけです。ここではtestと入力しています。バケットの作成には不要なページ・アイテムが表示されていますが、対処は省略します。サーバー側の条件などを設定し、非表示するのが望ましい対応でしょう。

作成をクリックします。


バケットが作成されたことを確認できます。


編集アイコンをクリックします。作成したバケットの削除を実行します。


この削除処理を実行しますか。と確認を求められるのでOKをクリックします。


バケットが削除されました。


バケットに日本語を入力するとエラーが発生しますが、これは元々バケット名として使用可能な文字に制限があるためです。OCIのコンソールから日本語のバケットを作ろうとしても同様にエラーになります。ですので、PL/SQL SDKの問題ではありません。


オブジェクトを操作するためのページを作成するため、バケットを作成しておきます。先ほど削除しましたが、再度testというバケットを作成しておきましょう。

バケットの操作については完了しました。

続く