サーチ…


前書き

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