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;
/