# CREATE PROCEDURE 文

CREATE PROCEDURE文によりCALL PROCEDUREで実行可能な、Javaの手続きを作成できます。

手続きやデータベースの所有者は自動的にEXECUTE権限を持つものとされ、また他のユーザに権限を付与することができます。EXECUTE権限は手続きやデータベースの所有者から剥奪できません。

#### 構文

    CREATE PROCEDURE 手続名 ( [ 手続きの引数
       [, 手続きの引数] ] * )
    [ 手続きの要素 ] *

#### 手続名

    [ スキーマ名. ] SQL92識別子

スキーマ名が指定されなかった場合、現在のスキーマが既定となります。手続名を限定する場合、スキーマ名はSYSで始まってはなりません。

#### 手続の引数

    [ { IN | OUT | INOUT } ] [ 引数名 ] データ型

引数の既定はINです。引数名は手続にて一意である必要があります。

データ型の構文はデータ型に記述されています。

注: BLOB、CLOB、LONG VARCHAR、LONG VARCHAR FOR BIT DATAやXMLのようなデータ型はCREATE PROCEDURE文にて引数と定義できません。

#### 手続の要素

     {
    | [ DYNAMIC ] RESULT SETS INTEGER
    | LANGUAGE { JAVA }
    | EXTERNAL NAME string
    | PARAMETER STYLE JAVA
    | { NO SQL | MODIFIES SQL DATA | CONTAINS SQL | READS SQL DATA }
     }

#### DYNAMIC RESULT SETS 数値

手続に見積もられる結果の上限を与えます。既定は結果無し(0)です。

#### LANGUAGE

JAVA- 手続はJavaのクラスにあるpublic staticなメソッドとして呼ばれます。

#### EXTERNAL NAME 文字列

文字列 により手続が実施されたときのJavaのメソッドが記述されます。これは次の書式となります。

    クラス名.メソッド名

この名前には空白があってはなりません。

#### PARAMETER STYLE

JAVA - 手続はJavaとSQLルーチンの仕様に沿って、値渡しにより引数を扱います。INOUTおよびOUTの引数は値を呼び出し側に戻せるように、要素を一つだけ持つ配列により渡されます。結果はJavaのメソッドにjava.sql.ResultSet[]の型で追加された、唯一つの要素を持つパラメータにより呼び出し側に戻されます。

Derby は長い列の型(例えばLong Varchar, BLOB等のことです。)をサポートしません。 もしこれらの長い列の型のうちの一つを使うと例外が発生します。

#### NO SQL, CONTAINS SQL, READS SQL DATA, MODIFIES SQL DATA

手続がSQL文を発行するか否か、またするならばどのようなSQL文を発行するかを表します。

CONTAINS SQL
  読み込みも変更も行わないSQL文を手続に持たせることができることを表します。サポートされていない文では異なるというエラーが発生します。これは既定です。
NO SQL
  手続ではいかなるSQL文も実行できません。
READS SQL DATA
  変更を行わないSQL文を手続に持たせることができることをあらわします。サポートされていない文では異なるというエラーが発生します。
MODIFIES SQL DATA
  手続でサポートされていない、あらゆるSQL文を手続から実行できることを表します。

手続の要素はどのような順序でも出現することができますが、それぞれの種類の要素は一度までしか現れてはなりません。手続にはこれらの定義が無ければなりません。

- LANGUAGE
- PARAMETER STYLE
- EXTERNAL NAME

#### 例

    CREATE PROCEDURE SALES.TOTAL_REVENUE(IN S_MONTH INTEGER,
    IN S_YEAR INTEGER, OUT TOTAL DECIMAL(10,2))
    PARAMETER STYLE JAVA READS SQL DATA LANGUAGE JAVA EXTERNAL NAME
    'com.acme.sales.calculateRevenueByMonth'

親トピック: CREATE 文
関連資料
CREATE FUNCTION 文
CREATE INDEX 文
CREATE SCHEMA 文
CREATE SYNONYM 文
CREATE TABLE 文
CREATE TRIGGER 文
CREATE VIEW 文