ストアード・プロシージャーおよびユーザー定義関数用のパラメーターの引き渡し規則

CALL ステートメントおよび関数の呼び出しでは、 サポートされるすべてのホスト言語で書かれたプログラムおよび REXX プロシージャーに引数を渡すことができます。

次の表で示されているように、各言語はそれに合わせて調整されたさまざまなデータ・タイプを サポートします。 SQL データ・タイプは、各表の左端の列に入っています。 その行の他の欄には、そのデータ・タイプが特定の言語のパラメーター・タイプとしてサポートされるかどうかを示す標識が入っています。列がブランクの場合、そのデータ・タイプは、その言語のパラメーター・タイプとしてサポートされません。 ホスト変数宣言は、Db2® for i が、このデータ・タイプをこの言語のパラメーターとしてサポートすることを示します。 この宣言では、ホスト変数がプロシージャーまたは関数によって正しく受け取られ、 設定されるために必要な宣言を行います。 SQL プロシージャーまたは関数の呼び出し時には、すべての SQL データ・タイプがサポートされるため、表の中には欄が設けられていません。

表 1. パラメーターのデータ・タイプ
SQL データ・タイプ C および C++ CL COBOL および ILE COBOL
SMALLINT short   PIC S9(4) BINARY
INTEGER long   PIC S9(9) BINARY
BIGINT long long   PIC S9(18) BINARY
注: ILE COBOL でのみサポートされます。
DECIMAL (p,s) decimal(p,s) TYPE(*DEC) LEN(p s) PIC S9(p-s)V9(s) PACKED-DECIMAL
注: 精度が 18 を超えてはなりません。
NUMERIC(p,s)     PIC S9(p-s)V9(s) DISPLAY SIGN LEADING SEPARATE
注: 精度が 18 を超えてはなりません。
DECFLOAT _Decimal32, _Decimal64, _Decimal128
注: C でのみサポートされます。
   
REAL または FLOAT(p) float   COMP-1
注: ILE COBOL でのみサポートされます。
DOUBLE PRECISION または FLOAT または FLOAT(p) double   COMP-2
注: ILE COBOL でのみサポートされます。
CHARACTER(n) char ... [n+1] TYPE(*CHAR) LEN(n) PIC X(n)
VARCHAR(n) char ... [n+1]   可変長文字ストリング
VARCHAR(n) FOR BIT DATA VARCHAR 構造化フォーム   可変長文字ストリング
CLOB CLOB 構造化フォーム   CLOB 構造化フォーム
注: ILE COBOL でのみサポートされます。
GRAPHIC(n) wchar_t ... [n+1]   PIC G(n) DISPLAY-1 または PIC N(n)
注: ILE COBOL でのみサポートされます。
VARGRAPHIC(n) VARGRAPHIC 構造化フォーム   可変長グラフィック・ストリング
注: ILE COBOL でのみサポートされます。
DBCLOB DBCLOB 構造化フォーム   DBCLOB 構造化フォーム
注: ILE COBOL でのみサポートされます。
BINARY BINARY 構造化フォーム   BINARY 構造化フォーム
VARBINARY VARBINARY 構造化フォーム   VARBINARY 構造化フォーム
BLOB BLOB 構造化フォーム   BLOB 構造化フォーム
注: ILE COBOL でのみサポートされます。
DATE char ... [11] TYPE(*CHAR) LEN(10) PIC X(10)
注: ILE COBOL の場合のみ、FORMAT DATE。
XML XML 構造化フォーム   XML 構造化フォーム
TIME char ... [9] TYPE(*CHAR) LEN(8) PIC X(8)
注: ILE COBOL の場合のみ、FORMAT TIME。
TIMESTAMP(n)

char ... [20]
    (n = 0 の場合)
char ... [n+21]
    (n > 0 の場合)

TYPE(*CHAR) LEN(19)
    (n = 0 の場合)
TYPE(*CHAR) LEN(n+20)
    (n > 0 の場合)

PIC X(19)  (n = 0 の場合)
PIC X(n+20)  (n > 0 の場合)

注: ILE COBOL の場合のみ、FORMAT TIMESTAMP。
ROWID ROWID 構造化フォーム   ROWID 構造化フォーム
データ・リンク      
アレイ      
標識変数 short   PIC S9(4) BINARY
表 2. パラメーターのデータ・タイプ
SQL データ・タイプ Java™ パラメーター・スタイル JAVA Java パラメーター・スタイル DB2GENERAL PL/I
SMALLINT short short FIXED BIN(15)
INTEGER int int FIXED BIN(31)
BIGINT long long  
DECIMAL (p,s) BigDecimal BigDecimal FIXED DEC(p,s)
NUMERIC(p,s) BigDecimal BigDecimal  
DECFLOAT BigDecimal BigDecimal  
REAL または FLOAT(p) float float FLOAT BIN(p)
DOUBLE PRECISION または FLOAT または FLOAT(p) double double FLOAT BIN(p)
CHARACTER(n) 文字列 文字列 CHAR(n)
VARCHAR(n) 文字列 文字列 CHAR(n) VAR
VARCHAR(n) FOR BIT DATA バイト[ ] com.ibm.db2.app.Blob CHAR(n) VAR
CLOB java.sql.Clob com.ibm.db2.app.Clob CLOB 構造化フォーム
GRAPHIC(n) 文字列 文字列  
VARGRAPHIC(n) 文字列 文字列  
DBCLOB java.sql.Clob com.ibm.db2.app.Clob DBCLOB 構造化フォーム
BINARY バイト[ ] com.ibm.db2.app.Blob BINARY 構造化フォーム
VARBINARY バイト[ ] com.ibm.db2.app.Blob VARBINARY 構造化フォーム
BLOB java.sql.Blob com.ibm.db2.app.Blob BLOB 構造化フォーム
XML AS CLOB java.sql.CLOB    
XML AS BLOB java.sql.BLOB    
DATE 日付 文字列 CHAR(10)
TIME 時間 文字列 CHAR(8)
TIMESTAMP(n) タイム・スタンプ 文字列

CHAR(19) (n = 0 の場合)
CHAR(n+20) (n > 0 の場合)

ROWID バイト[] com.ibm.db2.app.Blob ROWID 構造化フォーム
データ・リンク      
アレイ java.sql.Array    
標識変数     FIXED BIN(15)
表 3. パラメーターのデータ・タイプ
SQL データ・タイプ REXX RPG ILE RPG
SMALLINT   1 つのサブフィールドを含むデータ構造。 サブフィールド指定の 43 桁目は B、長さは 2、52 桁目は 0 とする。 データ指定。サブフィールド指定の 40 桁目は B、長さ <= 4、41 から 42 桁目は 00 とする。

あるいは

データ指定。サブフィールド指定の 40 桁目は I、長さ 5、41 から 42 桁目は 00 とする。
INTEGER 小数部 (およびオプションの先行符号) を伴わない数値ストリング 1 つのサブフィールドを含むデータ構造。 サブフィールド指定の 43 桁目は B、長さは 52 桁目は 0 とする。 データ指定。サブフィールド指定の 40 桁目は B、長さ <=09 かつ >=05、41 から 42 桁目は 00 とする。

あるいは

データ指定。サブフィールド指定の 40 桁目は I、長さ 10、41 から 42 桁目は 00 とする。
BIGINT     データ指定。サブフィールド指定の 40 桁目は I、長さ 20、41 から 42 桁目は 00 とする。
DECIMAL (p,s) 小数部 (およびオプションの先行符号) を伴う数値ストリング 1 つのサブフィールドを含むデータ構造。 サブフィールド指定の 43 桁目は P、52 桁目は 0 から 9 とする。あるいは、数値入力フィールドまたは計算結果フィールド。 データ指定。サブフィールド指定の 40 桁目は P、41 から 42 桁目は 00 から 31 とする。
NUMERIC(p,s)   1 つのサブフィールドを含むデータ構造。 サブフィールド指定の 43 桁目は ブランク、52 桁目は 0 から 9 とする。 データ指定。サブフィールド指定の 40 桁目は S とする。あるいは、40 桁目をブランク、41 から 42 桁目を 00 から 31 とする。
DECFLOAT      
REAL または FLOAT(p) 数字の次に E が入り、(次にオプションの先行符号)、次に数字が入ったストリング   データ指定。40 桁目は F、長さは 4 とする。
DOUBLE PRECISION または FLOAT または FLOAT(p) 数字の次に E が入り、(次にオプションの先行符号)、次に数字が入ったストリング   データ指定。40 桁目は F、長さは 8 とする。
CHARACTER(n) 2 つのアポストロフィの間に n 個の文字が入ったストリング サブフィールドを含まないデータ構造または 1 つのサブフィールドを含むデータ構造。サブフィールド指定の 43 桁目と 52 桁目は ブランク とする。あるいは、文字入力フィールドまたは計算結果フィールド。 データ指定。サブフィールド指定の 40 桁目は A とする。あるいは、40 桁目と 41 から 42 桁目をブランク とする。
VARCHAR(n) 2 つのアポストロフィの間に n 個の文字が入ったストリング   データ指定。サブフィールド指定の 40 桁目は A とする。あるいは、40 桁目と 41 から 42 桁目をブランク とし、44 から 80 桁目にキーワード VARYING を置く。
VARCHAR(n) FOR BIT DATA 2 つのアポストロフィの間に n 個の文字が入ったストリング   データ指定。サブフィールド指定の 40 桁目は A とする。あるいは、40 桁目と 41 から 42 桁目をブランク とし、44 から 80 桁目にキーワード VARYING を置く。
CLOB     CLOB 構造化フォーム
GRAPHIC(n) G' で始まり、n 個の 2 バイト文字の後に ' が入ったストリング   データ指定。サブフィールド指定の 40 桁目は G とする。
VARGRAPHIC(n) G' で始まり、n 個の 2 バイト文字の後に ' が入ったストリング   データ指定。サブフィールド指定の 40 桁目は G とし、44 から 80 桁目にキーワード VARYING を置く。
DBCLOB     DBCLOB 構造化フォーム
BINARY     BINARY 構造化フォーム
VARBINARY     VARBINARY 構造化フォーム
BLOB     BLOB 構造化フォーム
XML     XML 構造化フォーム
DATE 2 つのアポストロフィの間に 10 文字が入ったストリング サブフィールドを含まないデータ構造または 1 つのサブフィールドを含むデータ構造。サブフィールド指定の 43 桁目と 52 桁目は ブランク とする。長さは 10 とする。あるいは、文字入力フィールドまたは計算結果フィールド。 データ指定。サブフィールド指定の 40 桁目は D とする。44 から 80 桁目は DATFMT(*ISO) とする。
TIME 2 つのアポストロフィの間に 8 文字が入ったストリング サブフィールドを含まないデータ構造または 1 つのサブフィールドを含むデータ構造。サブフィールド指定の 43 桁目と 52 桁目は ブランク とする。長さは 8 とする。あるいは、文字入力フィールドまたは計算結果フィールド。 データ指定。サブフィールド指定の 40 桁目は T とする。44 から 80 桁目は TIMFMT(*ISO) とする。
TIMESTAMP(n) 2 つのアポストロフィの間に 26 文字が入ったストリング サブフィールドを含まないデータ構造または 1 つのサブフィールドを含むデータ構造。サブフィールド指定の 43 桁目と 52 桁目は ブランク とする。n = 0 の場合、長さは 19。n > 0 の場合、長さは n+20。 n = 0 の場合は長さ 19、n > 0 の場合は長さ n+20 のタイム・スタンプ・データ・タイプ。
ROWID     ROWID 構造化フォーム
データ・リンク      
アレイ      
標識変数 小数部 (およびオプションの先行符号) を伴わない数値ストリング 1 つのサブフィールドを含むデータ構造。 サブフィールド指定の 43 桁目は B、長さは 2、52 桁目は 0 とする。 データ指定。サブフィールド指定の 40 桁目は B、長さ <= 4、41 から 42 桁目は 00 とする。