• 検索結果がありません。

SQL パッケージの処理

ドキュメント内 rbal1pdf.ps (ページ 159-162)

SQL パッケージとは、特に分散リレーショナル・データベース・アプリケーションによって使用される SQL オブジェクトです。これには、サーバー上のデータにアクセスする各 SQL ステートメントの制御構 造が含まれます。

これらの制御構造は、アプリケーションが SQL ステートメントを使用してデータを要求する実行時に、サ ーバーによって使用されます。

SQL パッケージ作成のための SQL ステートメントはありません。 SQL パッケージは、以下の 2 つの方 法で作成することができます。

v RDB パラメーターにリレーショナル・データベース名を指定した CRTSQLxxx コマンドを使用する v SQL パッケージの作成 (CRTSQLPKG) コマンドの使用

ユーザーが上記のいずれかのオプションを使用して SQL パッケージを作成することが推奨されています が、パッケージが見つからない場合は暗黙的なパッケージ作成が試行されます。パッケージの所有者は、ア プリケーションの所有者に設定されます。

関連資料:

134ページの『分散リレーショナル・データベースのステートメント』

SQL 言語を使用して組み込まれるステートメントは、特に分散リレーショナル・データベースをサポート するためのものです。

143ページの『SQL パッケージの作成』

CRTSQLxxx コマンドのコンパイル時に、プリコンパイル・プロセスの一部として、 SQL パッケージと呼 ばれるオブジェクトを作成することができます。

145ページの『アプリケーションのバインド』

アプリケーション・プログラムで実行できるようにするには、その前にプログラムと参照されるテーブルお よびビューとの間の関係が確立されていなければなりません。この処理がバインドと呼ばれるものです。

SQL パッケージの作成 (CRTSQLPKG) コマンドの使用:

SQL パッケージの作成 (CRTSQLPKG) コマンドを入力して、コンパイル済みの分散リレーショナル・デー タベース・プログラムから SQL パッケージを作成することができます。また、このコマンドを使用すれ ば、前に作成されていた SQL パッケージを置き換えることもできます。

新規 SQL パッケージは、 RDB パラメーターによって定義されたリレーショナル・データベース上に作成 されます。新規 SQL パッケージは、CRTSQLxxx コマンドの PKG パラメーターで指定されているものと 同じ名前を持ち、同じライブラリーに入れられます。

サーバー・システムに SQL パッケージを作成するのに、 IBM DB2 Query Manager and SQL Development Kit for i ライセンス・プログラムは必要ありません。

関連資料:

123ページの『デフォルトのコレクション名』

プログラムのプリコンパイル時に、 CRTSQLxxx コマンドの DFTRDBCOL パラメーターにデフォルトの コレクション名を指定することによって、デフォルトのコレクション名が SQL プログラムで使用されるよ うに指定することができます。

構造化照会言語パッケージの作成 (CRTSQLPKG) コマンド SQL パッケージの管理:

SQL パッケージの作成後は、IBM i オペレーティング・システム上の他のオブジェクトの管理と同じ要領 で、SQL パッケージを管理することができます。

SQL パッケージを保管および復元し、他のシステムへ送り、パッケージに対するユーザーの権限の認可お よび取り消しを行うことができます。また、構造化照会言語パッケージの削除 (DLTSQLPKG) コマンドまた は DROP PACKAGE SQL ステートメントを入力することによって、 SQL パッケージを削除することも できます。

分散 SQL プログラムが作成されると、 SQL パッケージの名前および内部整合性トークンがプログラムに 保管されます。これらは、SQL パッケージを見つけ、 SQL パッケージがそのプログラムにとって正しい かどうかを検査するために実行時に使用されます。 SQL パッケージの名前は SQL プログラムの実行にと って重要なので、 SQL パッケージを別のライブラリーに移動、名前変更、複写、または復元することはで きません。

SQL パッケージに関する情報の表示:

SQL 情報印刷 (PRTSQLINF) コマンドを使用して、SQL パッケージに保管されている情報を表示できます。

表示される情報には、パッケージ中のコミットメント制御レベル、オプション、静的ステートメントが含ま れます。例えば、以下のコマンドは、SPIFFY コレクションの中の SQL パッケージ PARTS1 を表示しま す。

PRTSQLINF OBJ(SPIFFY/PARTS1) OBJTYPE(*SQLPKG)

SQL パッケージの削除 (DLTSQLPKG) コマンドを使用した SQL パッケージの削除:

構造化照会言語パッケージの削除 (DLTSQLPKG) コマンドを使用して、1 つまたは複数の SQL パッケー ジを削除することができます。削除する SQL パッケージが存在しているシステムで、DLTSQLPKG コマ ンドを実行しなければなりません。

SQL パッケージに対しては *OBJEXIST 権限が、また SQL パッケージが入っているコレクションに対し ては、少なくとも *EXECUTE 権限が必要です。

パッケージを除去するためには、SQL を使用する方法も何種類かあります。

v IBM DB2 Query Manager and SQL Development Kit for i ライセンス・プログラムをインストールして いる場合は、対話式 SQL を使用してサーバーを接続し、次に SQL DROP PACKAGE ステートメント を使用してパッケージを除去します。

v 接続する SQL プログラムを実行し、次にパッケージを除去します。

v Query 管理機能を使用してパッケージを接続し、除去します。

以下のコマンドは、SPIFFY コレクションの中の SQL パッケージ PARTS1 を削除します。

DLTSQLPKG SQLPKG(SPIFFY/PARTS1)

リモート IBM i オペレーティング・システム上の SQL パッケージを削除するには、SBMRMTCMD (リモ ート・コマンド投入) コマンドを使用して、リモート・システムに対して構造化照会言語パッケージの削除

(DLTSQLPKG) コマンドを実行してください。また、ディスプレイ・パススルーを使用して、リモート・シ

ステムにサインオンし、 SQL パッケージを削除することもできます。リモート・システムが IBM i オペ レーティング・システムではない場合には、リモート・ワークステーション・プログラムを使用してそのシ ステムにパススルーしてから、 SQL パッケージ削除コマンドをそのシステムにローカルで投入してくださ い。

関連資料:

構造化照会言語パッケージ削除 (DLTSQLPKG) コマンド リモート・コマンド投入 (SBMRMTCMD) コマンド パッケージ権限の変更:

IBM i 上で作成されたどのプログラムでも、そのパッケージの使用が許可されたユーザーを変更できま

す。

これには、次のように SQL の GRANT および REVOKE ステートメントを使用します。

v GRANT ALL PRIVILEGES ON TABLE テーブル名 TO ユーザー (ユーザーは PUBLIC でもよい) v GRANT EXECUTE ON PACKAGE パッケージ名 (通常は IBM i プログラム名) TO ユーザー (ユーザ

ーは PUBLIC でもよい)

またコマンド行に GRTOBJAUT および RVKOBJAUT コマンドを入力しても実行できます。

SQL DROP PACKAGE ステートメントの使用:

DROP PACKAGE ステートメントには、分散リレーショナル・データベースに関する PACKAGE パラメ ーターが組み込まれています。 DROP PACKAGE ステートメントは、プログラムに組み込んで発行するこ とも、対話式 SQL を使用して発行することもできます。

DROP PACKAGE を発行すると、SQL パッケージとその記述がサーバーから削除されます。この結果は、

構造化照会言語パッケージの作成 (DLTSQLPKG) コマンドをローカル・システムに入力した場合と同じに なります。SQL パッケージに依存している他のオブジェクトが、このステートメントの結果として削除さ れることはありません。

SQL パッケージを正常に削除するには、その SQL パッケージに対して次の特権を持っていなければなり ません。

v 参照コレクションに対するシステム権限 *EXECUTE v SQL パッケージに対するシステム権限 *OBJEXIST

以下の例には、DROP PACKAGE ステートメントを発行する方法が示してあります。

DROP PACKAGE SPIFFY.PARTS1

プログラムは、現在使用している SQL パッケージに対して DROP PACKAGE ステートメントを出すこと はできません。

関連資料:

SQL DROP ステートメント

ドキュメント内 rbal1pdf.ps (ページ 159-162)