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