データベース内のデータを操作するために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」を参照してください。