CREATE PROCEDURE ステートメントは、独立ステートメントまたはコールスペシフィケーションを作成または置き換えるために使用されます。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
独立ステートメントとは、データベース内に格納されるプロシージャ(特定の操作を実行するサブルーチン)です。
注意
CREATE PROCEDURE ステートメントで作成される独立ステートメントは、PLブロックやパッケージ内で宣言・定義されるステートメントとは異なります。
前提条件
スキーマ内で独立ストアドプロシージャを作成または置き換えるには、CREATE PROCEDURE システム権限が必要です。他のユーザーのスキーマ内で独立ストアドプロシージャを作成または置き換えるには、CREATE ANY PROCEDURE システム権限が必要です。
構文
create_procedure の構文は次のとおりです:
CREATE [ OR REPLACE ]
PROCEDURE plsql_procedure_source
ここで、plsql_procedure_source の構文は次のとおりです:
[ schema. ] procedure_name
[ ( parameter_declaration [, parameter_declaration ]... ) ] [ sharing_clause ]
[ ( default_collation_option | invoker_rights_clause | accessible_by_clause)... ]
{ IS | AS } { [ declare_section ] body | call_spec } ;
セマンティクス
構文 |
キーワードまたは構文ノード |
説明 |
|---|---|---|
| create_procedure | OR REPLACE | 既存の場合、このストアドプロシージャを再作成して再コンパイルします。ストアドプロシージャを再定義する前にその権限を付与されたユーザーは、再度権限を取得することなく引き続きストアドプロシージャにアクセスできます。 |
| plsql_procedure_source | schema | このストアドプロシージャが存在するスキーマ名です。デフォルト値は現在ユーザーのスキーマです。 |
| plsql_procedure_source | procedure_name | 作成するストアドプロシージャ名です。 |
| plsql_procedure_source | body | このストアドプロシージャに必要な実行可能部分、および例外処理部分(オプション)です。 |
| plsql_procedure_source | declare_section | ストアドプロシージャのオプションな宣言部分です。宣言はストアドプロシージャに対して局所的であり、body 内で参照できます。ストアドプロシージャの実行終了後は存在しなくなります。 |
例
ストアドプロシージャ userlogin を作成します。
CREATE TABLE loghistory
(userid VARCHAR2(20),
logdate DATE DEFAULT SYSDATE);
CREATE OR REPLACE PROCEDURE userlogin
IS
BEGIN
INSERT INTO loghistory (userid) VALUES (USER);
END;
/