PL / SQLは、直面する欠点を克服する手続き型言語です。 構造化照会言語 。これはSQLの拡張であり、PL / SQLアプリケーションやプログラムで面倒なことなくSQLクエリを使用することもできます。このPL / SQLチュートリアルでは、PL / SQLの基本概念について詳しく説明します。この記事では、次のトピックについて説明します。
- PL / SQLとは何ですか?
- PL / SQLのブロック構造
- PL / SQL変数
- PL / SQLの関数
- PL / SQLプロシージャ
- ネストされたブロック
- IFステートメント
- CASEステートメント
- ループステートメント
- 例外的な処理
PL / SQLとは何ですか?
これは、への手続き型言語拡張の略です。 構造化照会言語 。 Oracleは、SQLのいくつかの制限を拡張して、Oracle上で実行されるミッションクリティカルなアプリケーションを構築するためのより包括的なソリューションを提供するPL / SQLを作成しました。 。
特徴
PL / SQLは、意思決定、反復などの手続き型言語の機能を提供します。
PL / SQLは、単一のコマンドを使用して、多数のクエリを実行できます。
また、作成後にデータベースに格納されている関数、トリガー、プロシージャなどのPL / SQLユニットを再利用することもできます。
PL / SQLには、PL / SQLの例外を処理する例外処理ブロックもあります。
PL / SQLを使用して広範なエラーチェックも可能です。
PL / SQLで記述されたアプリケーションは、オラクルが動作可能でなければならない場合、他のハードウェアおよびオペレーティングシステムに移植可能です。
PL / SQLとSQL
SQL | PL / SQL |
SQLは、DDLおよびDML操作を実行するために使用される単一のクエリです。 | PL / SQLは、プログラム全体またはプロシージャ/関数などを定義するために使用されるコードのブロックです。 |
それは実際に物事がどのように行われる必要があるかを定義するのではなく、何が行われる必要があるかを定義します | PL / SQLは、物事をどのように行う必要があるかを定義します |
単一のステートメントを実行します | ステートメントのブロックを一度に実行します。 |
SQLは主にデータを操作するために使用されます | 一方、PL / SQLはアプリケーションの作成に使用されます |
PL / SQLコードを含めることはできません | これはSQL拡張機能であるため、SQLコードを含めることができます |
PL / SQLのブロック構造
PL / SQLは通常、コードをブロックに編成します。名前のないコードブロックは、匿名ブロックと呼ばれます。 Oracleデータベースに保存されないため、匿名ブロックと呼ばれます。 PL / SQLの匿名ブロックを見てみましょう。
[DECLARE]宣言ステートメント[BEGIN]実行ステートメント[EXCEPTION]例外ステートメントEND /
上に示した図を見ると、ブロック構造が4つの部分、つまり宣言、開始、例外、および終了に分割されていることがわかります。 PL / SQLでブロック構造がどのように機能するかを理解してみましょう。これらすべてのセクションのうち、実行セクションは必須であり、残りはすべてオプションです。
宣言する キーワードは宣言セクションに使用され、変数、関数などのデータ型と構造を宣言するために使用されます。
ベギン キーワードは実行セクションに使用されます。これは必須であり、実行する必要のあるすべてのステートメントが含まれています。このブロックはビジネスロジックが定義されている場所であり、このブロックでは手続き型ステートメントとSQLステートメントの両方を使用できます。
ザ・ 例外 キーワードは例外セクションに使用されます。これには、すべての例外ステートメントが含まれています。
終わり キーワードはブロックの終わりを示し、円記号「/」は、PL / SQLブロックの実行に使用しているツール(Oracle Database Tool)を示します。
PL / SQLコードの使用方法を示す簡単な例を次に示します。
BEGIN NULL END /
PL / SQLでブロック構造がどのように機能するかがわかったので、変数への値の宣言、命名、割り当てなど、PL / SQLのさまざまな側面を理解しましょう。
PL / SQL変数
PL / SQLの変数は、基本的には変化する名前、または特定のデータ型をサポートする一時的な格納場所です。 PL / SQLプログラムで変数を使用する方法を見てみましょう。
可変命名規則
PL / SQLは、変数の命名に関して次の規則に従います。
変数は31文字を超えることはできません
変数の名前はASCII文字で始まる必要があります。 PL / SQLでは大文字と小文字が区別されるため、大文字と小文字は異なる変数になります。
最初の文字の後には、特殊文字($、_)または任意の数字が必要です。
命名規則
変数を使用するには、以下にリストされている命名規則を使用してください。
プレフィックス | データ・タイプ |
v_ | VARCHAR2 |
n_ | 数 |
t_ | テーブル |
r_ | 行 |
d_ | 日付 |
b_ | ブール |
宣言
PL / SQLで変数宣言がどのように行われるかを理解してみましょう
宣言には、変数名の後にデータ型が続き、セミコロンで区切られています。以下は、PL / SQLで変数を宣言する方法を示す例です。
DECLARE v_name VARCHAR(25)n_age NUMBER(3)BEGIN NULL END
上記の例で行ったように、データ型の長さを追加することもできます。
.formatはPythonで何をしますか
アンカー
アンカーは基本的に、テーブル内の特定の列の列のデータ型に関連付けられたデータ型で変数を宣言する%TYPEキーワードの使用を指します。
これを理解するために例を見てください。テーブルEMPLOYEESがあるとすると、次の方法でアンカーを使用できます。
DECLARE v_name EMPLOYEE.NAME%TYPE n_age EMPLOYEE.AGE%TYPE BEGIN NULL END /
割り当て
変数の代入は非常に簡単です。代入演算子を使用して、変数に値を代入できます。次の例は、変数に値を割り当てる方法を示しています。
DECLARE v_name VARCHAR(20)n_course VARCHAR(10)BEGIN v_name = 'edureka' v_course = 'sql' END /
初期化
宣言セクションで変数の値を初期化することもできます。次の例は、値を変数に初期化する方法を示しています。
DECLARE v_name VARCHAR(20)= 'edureka' n_course VARCHAR(10)= 'sql' BEGIN NULL END /
変数の操作方法がわかったので、PL / SQLで関数をどのように使用するかを理解してみましょう。
PL / SQLの関数
PL / SQLの関数は、基本的に値を返す名前付きブロックです。サブルーチンまたはサブプログラムとも呼ばれます。次の構文は、PL / SQLで関数を使用する方法を示しています。
CREATE [OR REPLACE] FUNCTION function_name [(parameter_1 [IN] [OUT] data_type、parameter_2 [IN] [OUT] data_type、parameter_N [IN] [OUT] data_type] RETURN return_data_type ISBEGINステートメントreturnreturn_data_type EXCEPTION END /
まず、キーワードの後に関数名を指定する必要があります。関数名は動詞で始まる必要があります。関数には、パラメーターで指定するパラメーターがないか、1つ以上ある場合があります。各パラメータのデータ型を明示的に指定する必要があります。そうすると、次のいずれかのモードになります。
IN – INパラメーターは読み取り専用パラメーターです。
でる - 書き込み専用パラメータです
IN OUT – INOUTパラメータは両方とも読み取り/書き込みパラメータです。
これは、PL / SQLで関数を使用する方法を示す簡単な例です。
CREATE OR REPLACE FUNCTION try_parse(iv_number IN VARCHAR2)RETURN NUMBER IS BEGIN RETURN to_number(iv_number)EXCEPTION WHEN THEN THEN RETURN NULL END
関数の呼び出し
次の例では、匿名ブロックで作成した関数を呼び出してみましょう。
SET SERVEROUTPUT ON SIZE 1000000 DECLARE n_x number n_y number n_z number BEGIN n_x:= try_parse( '256')n_y:= try_parse('29 .72 ')n_z:= try_parse(' pqrs ')DBMS_OUTPUT.PUT_LINE(n_x)DBMS_OUTPUT.PUT_LINE( n_y)DBMS_OUTPUT.PUT_LINE(n_z)END /
SELECTステートメントで関数を呼び出すこともできます。 PL / SQLで関数を使用する方法がわかったので、PL / SQLでプロシージャを操作する方法を理解してみましょう。
PL / SQLプロシージャ
プロシージャは基本的に、特定のタスクを実行するブロックです。プロシージャを使用して、複雑なビジネスロジックをラップまたはカプセル化し、アプリケーション層とデータベース層の両方で再利用できます。
PL / SQLでプロシージャがどのように機能するかを理解するために、簡単な例を見てみましょう。
作成または置換手順adjust_salary(in_employee_id IN EMPLOYEES.EMPLOYEE_ID%TYPE、in_percent IN NUMBER)ISBEGIN-従業員の給与を更新します従業員を更新しますSETsalary = salary + salary * in_percent / 100 WHERE employee_id = in_employee_id END
上記の例では、2つのパラメーターがあります。プロシージャは、指定されたパーセンテージで給与を調整し、UPDATEキーワードは給与情報の値を更新します。
プロシージャヘッダー
キーワードISの前のセクションは、プロシージャヘッダーと呼ばれます。以下は、手順を操作する際に知っておく必要のあるいくつかのポイントです。
スキーマ– これは、プロシージャが属するスキーマのオプションの名前です。
名前 - 動詞で始まるプロシージャの名前。
パラメーター - これは、オプションのパラメーターのリストです。
AUTHID – プロシージャを現在のユーザーの権限で実行するか、プロシージャの元の所有者の権限で実行するかを決定します。
手順本体
ISキーワードの後に続くものはすべて、プロシージャー本体と呼ばれます。プロシージャ本体には、宣言、例外、および実行ステートメントがあります。関数とは異なり、プロシージャのRETURNキーワードは、実行を停止し、呼び出し元に制御を返すために使用されます。
プロシージャの呼び出し
PL / SQLでプロシージャを呼び出す方法を見てみましょう。
EXEC procedure_name(param1、param2&hellipparamN)
EXECキーワードとプロシージャ名を使用するだけで、パラメータなしでプロシージャを呼び出すことができます。プロシージャの操作方法がわかったので、ネストされたブロックがPL / SQLでどのように使用されるかを理解してみましょう。
ネストされたブロック
ネストされたブロックは、プログラムの実行と例外処理をより適切に制御するための1つ以上のPL / SQLブロックの組み合わせに他なりません。
ネストされたブロックの簡単な例を次に示します。
SET SERVEROUTPUT ON SIZE 1000000 DECLARE n_emp_id EMPLOYEES.EMPLOYEE_ID%TYPE:=&emp_id1 BEGIN DECLARE n_emp_id employee.employee_id%TYPE:=&emp_id2 v_name employees.first_name%TYPE BEGIN SELECT first_name INTO v_name FROM employees WHERE employee_id = n_emp of employee '|| n_emp_id ||' is '|| v_name)EXCEPTION WHEN no_data_found THEN DBMS_OUTPUT.PUT_LINE(' Employee '|| n_emp_id ||' not found ')END END /
上記の例の外側のPL / SQLブロックは、親ブロックまたは囲んでいるブロックと呼ばれ、一方、内側のブロックは、子ブロックまたは囲まれたブロックと呼ばれます。
実行中に子ブロック変数が親ブロック変数をオーバーライドするため、両方のブロックで同じ名前の変数を使用することはお勧めできません。これは、PL / SQLが自身のブロック内の変数を最優先するために発生します。
ブロックラベル
この問題は、ラベルを使用してブロック内の変数を参照するのに役立つブロックラベルで解決できます。
これは、ブロックラベルの使用方法を示す簡単な例です。
<>宣言...開始...終了
ブロックラベルを使用すると、コードの可読性が向上し、制御が向上し、ブロックへの参照が作成されます。ネストされたブロックを操作する方法がわかったので、PL / SQLでIFステートメントがどのように機能するかを理解してみましょう。
IFステートメント
PL / SQLには3つのIF文があります
IF-THEN –条件が真の場合はステートメントが実行され、条件が偽の場合は何も実行されないのが最も単純なIFステートメントです。
IF-THEN-ELSE – この場合、ステートメントの代替シーケンスにELSE句が追加されます。
IF-THEN-ELSEIF – これにより、複数のテスト条件を順番に実行できます。
IF-THEN構文
オーバーロードとオーバーライドの違い
IF条件THENsequence_of_statements END IF
IF-THEN-ELSE構文
IF条件THENsequence_of_if_statements ELSE sequence_of_else_statements END IF
IF-THEN-ELSEIF構文
IF condition1 THEN sequence_of_statements1 ELSIF condition2 THEN sequence_of_statements2 ELSE sequence_of_statements3 END IF
IFステートメントが完了したので、PL / SQLのCASEステートメントを見てみましょう。
CASEステートメント
CASEステートメントは基本的に、セレクターに基づいて一連のステートメントを実行するのに役立ちます。この場合、セレクターは何でもかまいません。変数、関数、または単純な式にすることができます。これは、PL / SQLのCASE文の構文を示す簡単な例です。
[<>]ケース[真|セレクター] WHEN expression1 THEN sequence_of_statements1 WHEN expression2 THEN sequence_of_statements2 ... WHEN expressionN THEN sequence_of_statementsN [ELSE sequence_of_statementsN + 1] END CASE [label_name]
上記の構文では、CASEキーワードの後にセレクターがあります。 PL / SQLは、セレクタを1回だけ評価して、実行する必要のある文を判別します。
セレクターの後には、WHENキーワードが続きます。式がセレクターを満たす場合、THENキーワードの後の対応するステートメントが実行されます。
CASEステートメントの使用方法がわかったので、PL / SQLでループステートメントをどのように使用するかを理解してみましょう。
ループステートメント
PL / SQLのループ文は、一連の文を複数回実行できるようにする反復文です。 PL / SQLのループ文の構文を示す簡単な例を次に示します。
LOOP sequence_of_statements END LOOP
LOOPキーワードとENDLOOPキーワードの間には、少なくとも1つの実行可能ステートメントが必要です。
EXITステートメントでループする
EXITおよびEXITwhenステートメントを使用すると、ループを終了できます。 EXIT WHENステートメントはループを条件付きで終了し、EXITは実行を無条件で終了します。
LOOP ... EXITWHEN条件ENDLOOP
ループラベル
ループラベルは、ネストされたループで使用される場合、ループカウンター変数の名前を修飾するために使用されます。以下は、ループラベルの構文です。
<>LOOP sequence_of_statements ENDLOOPラベル
ループステートメントの使用方法がわかったので、理解を深めるためにwhileループステートメントを見てみましょう。
whileループステートメント
実行が開始されるまで実行数が定義されていない場合は、WHILEループステートメントを使用できます。次の構文は、PL / SQLのWHILEループ文に使用されます。
WHILE条件LOOPsequence_of_statements END LOOP
構文の条件は、TRUE、FALSE、またはNULLのいずれかであると評価されるブール値または式です。条件がTRUEの場合、ステートメントが実行され、FALSEの場合、実行は停止し、制御は次の実行可能ステートメントに進みます。
WHILEループステートメントの使用方法がわかったので、FORループステートメントを見てみましょう。
Forループステートメント
PL / SQLのFORループ文を使用すると、一連の文を一定の回数実行できます。 PL / SQLでFORループ文を使用するための構文は次のとおりです。
FOR loop_counter IN [REVERSE] lower_bound .. high_bound LOOP sequence_of_statements END LOOP ..
PL / SQLは、ループのINTEGERデータ型を使用してローカル変数loop_counterを自動的に作成するため、明示的に宣言する必要はありません。 lowerbound..higherboundは、ループが繰り返される範囲です。また、LOOPキーワードとENDLOOPキーワードの間に少なくとも1つの実行可能ステートメントが必要です。
PL / SQLでループ文を使用する方法がわかったので、PL / SQLでの例外処理を見てみましょう。
例外的な処理
PL / SQLでは、あらゆる種類のエラーが例外として扱われます。例外は、実行フローを変更または変更できる特別な条件として扱うことができます。 PL / SQLには、2種類の例外があります。
システム例外– エラーを検出すると、PL / SQLランタイムによって発生します。
プログラマー定義の例外– これらの例外は、特定のアプリケーションでプログラマーによって定義されます。
例外の定義
PL / SQLの例外は、発生する前に宣言する必要があります。以下の例で行ったように、EXCEPTIONキーワードを使用して例外を定義できます。
EXCEPTION_NAME EXCEPTION
例外を発生させるには、RAISEキーワードを使用します。
RAISE EXCEPTION_NAME
PL / SQLについては以上ですが、この記事が知識に付加価値を与えるのに役立つことを願っています。 SQLまたはデータベースの詳細については、こちらの包括的な資料リストを参照してください。 。
MySQLの構造化されたトレーニングを取得したい場合は、 インストラクター主導のライブトレーニングと実際のプロジェクト経験が付属しています。このトレーニングは、MySQLを深く理解し、主題をマスターするのに役立ちます。
質問がありますか? 」のコメントセクションでそれについて言及してください PL / SQLチュートリアル 」と私はあなたに戻ります。