データベース内のデータを操作するためにPL/SQLサブプログラム(ブロック)を使用することもできます。個々のPL/SQL文については、『Oracle Database PL/SQL言語リファレンス』を参照してください。
SQL*Plusでは、SQLコマンドと同じ方法でPL/SQLサブプログラムを処理できますが、セミコロン(;)または空白行でブロックを終了および実行できません。PL/SQLサブプログラムを終了するには、新しい行にピリオド(.)のみを入力します。新しい行にスラッシュ(/)のみを入力しても終了および実行が可能です。
PL/SQL文を入力するためのモードに入る方法は、次のとおりです。
DECLAREまたはBEGINを入力します。この方法でPL/SQLモードに入った後、残りのPL/SQLサブプログラムを入力します。
ストアド・プロシージャを作成するSQLコマンド(CREATE PROCEDUREなど)を入力します。この方法でPL/SQLモードに入った後、作成するストアド・プロシージャを入力します。
入力したサブプログラムは、SQLバッファに格納されます。RUNコマンドまたはスラッシュ(/)を入力して、現行のサブプログラムを実行します。セミコロン(;)はPL/SQLサブプログラムの一部とみなされるため、コマンドは実行されません。
処理のために(SQLコマンドの場合と同様に)、PL/SQLサブプログラム全体がSQL*PlusからOracle Databaseに送信されます。詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
たとえば、次のようなPL/SQLサブプログラムを入力して実行できます。
DECLARE
x NUMBER := 100;
BEGIN
FOR i IN 1..10 LOOP
IF MOD (i, 2) = 0 THEN --i is even
INSERT INTO temp VALUES (i, x, 'i is even');
ELSE
INSERT INTO temp VALUES (i, x, 'i is odd');
END IF;
x := x + 100;
END LOOP;
END;
.
/
ストアド・プロシージャは、PL/SQLのファンクション、パッケージまたはプロシージャです。ストアド・プロシージャを作成するには、次のSQLのCREATEコマンドを使用します。
CREATE FUNCTION
CREATE LIBRARY
CREATE PACKAGE
CREATE PACKAGE BODY
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
これらのいずれかのコマンドを入力すると、PL/SQLモードに入り、PL/SQLサブプログラムを入力できます。詳細は、PL/SQLブロックの実行についてを参照してください。PL/SQLサブプログラムの入力終了後、ピリオド(.)のみの行を入力してPL/SQLモードを終了します。SQLコマンドを実行し、ストアド・プロシージャを作成するには、RUNまたはスラッシュ(/)を入力する必要があります。セミコロン(;)を入力すると、CREATEコマンドは実行されません。
CREATEコマンドを使用してストアド・プロシージャを作成する場合、コンパイル・エラーが発生するとメッセージが表示されます。それらのエラーを表示するには、SHOW ERRORSを使用します。次に例を示します。
SHOW ERRORS PROCEDURE ASSIGNVL
詳細は、「SHOW」を参照してください。
ストアド・プロシージャを参照するPL/SQL文を実行するには、SQL*PlusのEXECUTEコマンドを使用します。EXECUTEは、このコマンドの直後に入力されたPL/SQL文を実行します。次に例を示します。
EXECUTE EMPLOYEE_MANAGEMENT.NEW_EMP('BLAKE')
詳細は、「EXECUTE」を参照してください。