サーチ…
前書き
PLSQLプロシージャーは、再使用のためにサーバーに保管されたSQLステートメントのグループです。 SQL文を実行するたびに再コンパイルする必要がないため、パフォーマンスが向上します。
ストアドプロシージャは、複数のアプリケーションで同じコードが必要な場合に便利です。ストアドプロシージャを使用すると、冗長性がなくなり、コードが簡単になります。クライアントとサーバーの間でデータ転送が必要な場合、プロシージャは特定の状況で通信コストを削減できます。
構文
CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_name [IN | OUT | IN OUT] type [, ...])]
{IS | AS}
< declarations >
BEGIN
< procedure_body >
EXCEPTION -- Exception-handling part begins
<exception handling goes here >
WHEN exception1 THEN
exception1-handling-statements
END procedure_name;
- procedure-nameは、プロシージャーの名前を指定します。
- [OR REPLACE]オプションを使用すると、既存のプロシージャを変更できます。
- オプションのパラメータリストには、パラメータの名前、モード、およびタイプが含まれます。 INは外部から値が渡されることを表し、OUTはこのパラメーターがプロシージャー外の値を戻すために使用されることを表します。モードを指定しない場合、パラメータはINモードと見なされます。
- 宣言セクションでは、本体部分で使用される変数を宣言できます。
- procedure-bodyには実行可能部分が含まれます。
- スタンドアロン・プロシージャの作成には、ISキーワードの代わりにASキーワードが使用されます。
- 例外セクションはプロシージャの例外を処理します。このセクションはオプションです。
こんにちは世界
次の簡単な手順では、 dbms_output
をサポートするクライアントに "Hello World"というテキストを表示します。
CREATE OR REPLACE PROCEDURE helloworld
AS
BEGIN
dbms_output.put_line('Hello World!');
END;
/
SQLプロンプトでこれを実行してデータベースにプロシージャを作成するか、以下のクエリを実行して同じ結果を得ることができます。
SELECT 'Hello World!' from dual;
入力/出力パラメータ
PL / SQLは、IN、OUT、IN OUTキーワードを使用して、渡されたパラメータに何が起こるかを定義します。
INは、パラメータが読み取り専用であり、プロシージャで値を変更できないことを示します。
OUTはパラメータが書き込み専用であることを指定し、プロシージャは値を代入できますが、値を参照することはできません。
IN OUTは、パラメーターが参照および変更に使用可能であることを指定します。
PROCEDURE procedureName(x IN INT, strVar IN VARCHAR2, ans OUT VARCHAR2)
...
...
END procedureName;
procedureName(firstvar, secondvar, thirdvar);
上の例で渡された変数は、プロシージャ・パラメータ・セクションで定義されているとおりに型付けする必要があります。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow