PL / SQL関数と同様に、ストアドプロシージャは自己完結型です。 いくつかの特定のタスクを実行することを目的としたサブプログラム。また、関数と同様に、プロシージャにはPL / SQLブロックという名前が付けられているため、データベースオブジェクトとしてデータベースに格納されるため、再利用できます。ただし、 PL / SQL関数とは異なり、ストアドプロシージャは値を返しません 。
PL/SQLストアドプロシージャの構文
CREATE [OR REPLACE] PROCEDURE pro_name (Parameter – List) IS [AUTHID DEFINER | CURRENT_USER] Declare statements BEGIN Executable statements END procedure name; /
上記のPL/SQLストアド・プロシージャの構文は、前回のPL/SQLチュートリアルで見たPL/SQL関数の構文とほとんど同じです。 2つのことを除いて:
- Return句はありません。
PL / SQL関数とストアドプロシージャの主な違いは、関数とは異なり、ストアドプロシージャは値を返さないことです。
- AUTHID句。
AUTHID句は、PL/SQLプロシージャの権限モデルを設定するために使用されます。この句には2つのフラグがあります。
- DEFINERおよび
- CURRENT_USER
この句はオプションであるため、AUTHID句を使用しない場合、Oracle Engineはデフォルトで権限(AUTHID)をDEFINERに設定します。ここで、これらのDEFINERおよびCURRENT_USERの権限が何であるか疑問に思う必要がありますか?
定義者の権利: 定義者権限は、Oracleエンジンによってプロシージャに割り当てられるデフォルトの権限です。この権利は、プロシージャの実行特権を持つすべての人が、特権が作成されたスキーマの所有者であるかのように動作することを意味します。
CURRENT_USER権利: ストアドプロシージャの権限レベルをcurrent_user権限に設定すると、デフォルトの権限であるdefinerが上書きされ、呼び出し元の権限に変更されます。
呼び出し元の権限とは、ローカルデータを操作するためにプロシージャを呼び出すことを意味し、参加しているスキーマにデータオブジェクトを複製する必要があります。
ストアドプロシージャに関するいくつかの追加ポイント
- 正式なパラメータの有無にかかわらず、プロシージャを定義できます。
- パラメータは値渡しのいずれかです。 または参照渡し 。
- デフォルトのINモードを使用するため、パラメータモードを指定しない場合、プロシージャは値渡しプロシージャになります。
PL/SQLストアドプロシージャの概要は以上です。下記のブログもお楽しみいただけると思います。すべてのブログは、就職の面接とOracle Database認定を念頭に置いて作成されています。必ず、チェックしてください。
- PL/SQL関数とPL/SQLストアド・プロシージャの違いは?
- PL / SQL関数およびプロシージャのパラメータ・モードとは何ですか?
- 正式なパラメータと実際のパラメータは何ですか?
常に覚えておいてください:ソーシャルメディアで友達と共有することで、他の人の学習を助け、私と私のチャンネル、そしてこのブログをサポートすることができます。
それはみんなです。読んでくれてありがとう。気をつけて、素晴らしい一日を!