ここでは、OraclePLSQLのブロック構造とタイプについて説明します
PL/SQLとは
PL / SQLは、手続き型言語機能を可能にするOracle独自のSQL拡張機能です。データのカプセル化、例外処理、情報の隠蔽、オブジェクト指向など、最新のソフトウェアエンジニアリングのすべての機能を提供します
PLSQLを使用する理由
1)Oracleフォーム、レポートなどの開発ツールとの統合
2)複数のステートメントを単一のplsqlブロックにグループ化して、Oracleサーバーに送信すると、ネットワークトラフィックが減少します
3)モジュール化されたプログラム開発:複雑なロジック/問題を管理可能で明確に定義された論理モジュールのセットに分解し、ブロックを使用してそれらを実装します
4)移植性:Oracleサーバーにネイティブであるため、簡単に移動できます
5)if条件、ループなどの手続き型言語制御構造を提供します
6)エラーを処理し、それに基づいて例外を発生させる機能があります
PLSQLブロック構造
plsqlブロックは、宣言、実行可能ファイル、および例外の3つのセクションで作成されます。
DECLARE(オプション)– このセクションには、変数、定数、カーソル、およびユーザー定義の例外が含まれています。 BEGIN(必須) 実行可能ファイル– このセクションには、SQLステートメントが含まれています。 例外(オプション)- このセクションには、エラーハンドラが含まれています。END(必須); |
したがって、宣言と例外セクションはオプションです。
ブロック構造の例
DECLARE l_number NUMBER; BEGIN l_number := 1; Dbms_output.put_line(l_number); Exception When others then Dbms_output.put_line(‘Exception occurred’); END; /
メモする重要なポイント
1)すべての変数と定数はdeclareセクションで定義されています
2)セミコロンを配置します; sqlステートメントまたはplsql制御ステートメントの最後
3)PL / SQLでは、すべてのエラーはExceptionブロックで処理されます。
4)BeginとEndは、PL/SQLブロックの開始と終了を示す必須の文です。
5)変数と定数は、使用する前に最初に宣言する必要があります。
6)値は、SELECT…INTOステートメントを介して、またはプロシージャからOUTまたはIN OUTパラメータとして使用される場合に、「:=」代入演算子を使用して変数に直接割り当てることができます。
7)セクションキーワードDeclare、Begin、exceptionの後にセミコロンが続かない
8)Endおよび他のすべてのplsqlステートメントでは、ステートメントを終了するためにセミコロンが必要です
PLSQLブロックタイプ
匿名 :匿名ブロックは名前のないブロックです。それらは、実行する必要があるアプリケーションのポイントで宣言されます
DECLARE l_number NUMBER; BEGIN l_number := 1; Dbms_output.put_line(l_number); Exception When others then Dbms_output.put_line(‘Exception occurred’); END; /
機能 :これらは、パラメータを受け入れ、関数を計算して返すことができるPLSQLブロックの名前です。 Oracleサーバーまたはアプリケーションに保存できます
Syntax FUNCTION name [(parameter[, parameter, …])] RETURN datatype IS [local declarations] BEGIN executable statements [EXCEPTION exception handlers] END [name]; Example Create or replace function FUNC return number As l_number NUMBER; BEGIN Select count(*) into l_number from emp; return(l_number) END; /
手順 :これらは、パラメータを受け入れて一部の情報を処理し、値を返す場合と返す場合があるPLSQLブロックの名前です。 Oracleサーバーまたはアプリケーションに保存できます
Syntax PROCEDURE name [(parameter[, parameter, …])] IS [local declarations] BEGIN executable statements [EXCEPTION exception handlers] END [name]; Example Create or replace procedure remove_emp (emp_id number) As BEGIN Delete from emp where employee_id=emp_id; END; /
機能 | 手順 |
関数は値を返す必要があります | 手順は必要ありません |
構文 | 構文 |
関数名(引数リスト…..)戻り値のデータ型は | 手順名(パラメータリスト…..) |
ローカル変数宣言 | は |
開始 | ローカル変数宣言 |
実行可能ステートメント | BEGIN |
例外 | 実行可能ステートメント。 |
実行ハンドラー | 例外。 |
終了; | 例外ハンドラー |
終了; | |
関数はSQLで使用できますが制限があります | プロシージャをSQLから直接呼び出すことはできません。 |
OraclePLSQLブロックの構文とガイドライン
1)文字と日付のリテラルは一重引用符で囲む必要があります
2)/*と*/
の間に複数行のコメントを配置します3)ほとんどのSQL関数はPLSQLで使用できます。SQLと同じようにPLSQLでchar、date、number関数を使用できます
4)グループ化関数はPLSQLでは使用できません。 PLSQLのsqlステートメントでのみ使用できます
5)コードを読みやすくするために、適切なインデントを使用する必要があります
6)読みやすさとメンテナンスを向上させるために、DMLステートメントを大文字、PLSQLキーワード、データ型を大文字、Put識別子とパラメータを小文字で記述することをお勧めします。
関連リンク
OraclePLSQLのドキュメント
最もよく聞かれる25のOraclePlSQLインタビューの質問
Oraclesqlおよびplsql
sqlクエリの記述方法