SQL および言語のデータ・タイプの互換性

SQL ステートメントに使用されるホスト変数のデータ・タイプは、これらの変数を使用する対象の列のデータ・タイプと互換であることが必要です。

ホスト変数のデータ・タイプを決定する際には、次の規則と推奨情報を考慮してください。

  • 数値データ・タイプは相互に互換性があります。
    アセンブラー
    SMALLINT、 INTEGER、 BIGINT、 DECIMALまたは FLOAT 列は、数値アセンブラー・ホスト変数と互換性があります。
    Fortran
    INTEGER 列は、 INTEGER*2、 INTEGER*4、 REAL、 REAL*4、 REAL*8または DOUBLE PRECISIONとして定義されている任意の Fortran ホスト変数と互換性があります。
    PL/I
    SMALLINT、INTEGER、BIGINT、DECIMAL、またはFLOAT列は、BIN FIXED(15)、BIN FIXED(31)、DECIMAL(s、p)、またはBIN FLOAT(n)のPL / Iホスト変数と互換性があります。ここで、n は1から53、またはDEC FLOAT(m)です。ここでmは1から16です。
  • 文字データ・タイプは相互に互換性があります。
    アセンブラー
    CHAR、VARCHARまたは CLOB 列は、固定長または可変長のアセンブラー文字ホスト変数と互換性があります。
    C/C++
    CHAR、VARCHARまたは CLOB 列は、 C 文字のホスト変数の単一文字、 NULL 終了、または可変長文字 ( VARCHAR ) 型の構造化形式と互換性があります。
    COBOL
    CHAR、 VARCHARまたは CLOB 列は、固定長または可変長の COBOL 文字ホスト変数と互換性があります。
    Fortran
    CHAR、 VARCHARまたは CLOB 列は、 Fortran 文字ホスト変数と互換性があります。
    PL/I
    CHAR、 VARCHARまたは CLOB 列は、固定長または可変長の PL/I 文字ホスト変数と互換性があります。
  • 文字データ・タイプは部分的に CLOB ロケーターと互換性があります。 以下のように割り当てることができます。
    • CLOB ロケーターの値は、CHAR または VARCHAR の列に割り当てます。
    • CHAR または VARCHAR の列を CLOB ロケーター・ホスト変数に割り当てるに は、SELECT INTO ステートメントを使用します。
    • ユーザー定義関数またはストアード・プロシージャーから の CHAR または VARCHAR 出力パラメーターは、CLOB ロケーター・ホスト変数に割り当てます。
    • CHAR または VARCHAR の遷移変数を CLOB ロケーター・ホスト変数に割り当てるに は、SET 割り当てステートメントを使用します。
    • CHAR または VARCHAR の関数パラメーターを CLOB ロケーター・ホスト変数に 割り当てるには、VALUES INTO ステートメントを使用します。
    ただし、CHAR または VARCHAR の列の値を CLOB ロケーター・ホスト変数に割り当てる ために FETCH ステートメントを使用することはできません。
  • グラフィック・データ・タイプは相互に互換性があります。
    アセンブラー
    GRAPHIC列、 VARGRAPHIC列または DBCLOB 列は、固定長または可変長のアセンブラー・グラフィック文字ホスト変数と互換性があります。
    C/C++
    GRAPHIC列、 VARGRAPHIC列、または DBCLOB 列は、 C グラフィック・ホスト変数の単一の文字、 NULL 終了、または VARGRAPHIC 構造化形式と互換性があります。
    COBOL
    GRAPHIC列、 VARGRAPHIC列、または DBCLOB 列は、固定長または可変長の COBOL グラフィック・ストリング・ホスト変数と互換性があります。
    PL/I
    GRAPHIC、VARGRAPHIC、またはDBCLOB列は、固定長または可変長のPL / Iグラフィック文字ホスト変数と互換性があります。
  • グラフィック・データ・タイプは部分的に DBCLOB ロケーターと互換性があります。 以下のように割り当てることができます。
    • DBCLOB ロケーターの値は、GRAPHIC または VARGRAPHIC の列に割り当てます。
    • GRAPHIC または VARGRAPHIC の列を DBCLOB ロケーター・ホスト変数に割り当てるに は、SELECT INTO ステートメントを使用します。
    • ユーザー定義関数またはストアード・プロシージャーからの GRAPHIC または VARGRAPHIC 出力パラメーターは、DBCLOB ロケーター・ホスト変数に割り当てます。
    • GRAPHIC または VARGRAPHIC の遷移変数を DBCLOB ロケーター・ホスト変数に割り当てるに は、SET 割り当てステートメントを使用します。
    • GRAPHIC または VARGRAPHIC の関数パラメーターを DBCLOB ロケーター・ホスト 変数に割り当てるには、VALUES INTO ステートメントを使用します。
    ただし、GRAPHIC または VARGRAPHIC の列の値を DBCLOB ロケーター・ホスト変数に 割り当てるために FETCH ステートメントを使用することはできません。
  • バイナリー・データ・タイプは、相互に互換性があります。
  • バイナリー・データ・タイプは、部分的に BLOB ロケーターと互換性があります。 以下のように割り当てることができます。
    • BLOB ロケーターの値は、BINARY または VARBINARY の列に割り当てます。
    • BINARY または VARBINARY の列を BLOB ロケーター・ホスト変数に割り当てるに は、SELECT INTO ステートメントを使用します。
    • ユーザー定義関数またはストアード・プロシージャーから の BINARY または VARBINARY 出力パラメーターを、BLOB ロケーター・ホスト変数に 割り当てます。
    • BINARY または VARBINARY の遷移変数を BLOB ロケーター・ホスト変数に割り当てるに は、SET 割り当てステートメントを使用します。
    • BINARY または VARBINARY の関数パラメーターを BLOB ロケーター・ホスト変数に 割り当てるには、VALUES INTO ステートメントを使用します。
    ただし、BINARY または VARBINARY の列の値を BLOB ロケーター・ホスト変数に割り当てる ために FETCH ステートメントを使用することはできません。
  • 日時データ・タイプは、文字ホスト変数と互換性があります。
    Fortran
    BINARY、VARBINARY、またはBLOB列またはBLOBロケーターは、BLOBホスト変数とのみ互換性があります。
    C:
    可変長のBITデータの場合は、BINARYを使います。 NUL 終止符ストリングを処理する C ストリング操作機能も あれば、NUL 終止符でないストリングを処理する他の機能もあります。 NUL 終止符ストリングを処理 する C ストリング操作関数は、NUL 文字を NUL 終止符と誤って 解釈することがあるため、ビット・データを処理できません。
    アセンブラー
    DATE、TIME、またはTIMESTAMP列は、固定長または可変長のアセンブラー文字ホスト変数と互換性があります。
    C/C++
    DATE、TIME、またはTIMESTAMP列は、C文字ホスト変数の単一文字、NUL終了、またはVARCHAR構造化形式と互換性があります。
    COBOL
    DATE、TIME、またはTIMESTAMP列は、固定長または可変長のCOBOL文字ホスト変数と互換性があります。
    Fortran
    DATE、 TIME、または TIMESTAMP 列は、 Fortran 文字ホスト変数と互換性があります。
    PL/I
    DATE、TIME、またはTIMESTAMP列は、固定長または可変長のPL / I文字ホスト変数と互換性があります。
  • ROWID 列は、ROWID ホスト変数とのみ互換性があります。
  • ホスト変数のタイプが特殊タイプのソース・タイプと互換性があれば、 ホスト変数はその特殊タイプと互換性があります。
  • XML 列は、XML ホスト変数タイプ、文字タイプ、およびバイナリー・ストリング・タイプと互換性があります。
    推奨 :XMLカラムからのデータには、XMLホスト変数型を使用してください。
  • アセンブラー
    LOB データをファイル参照変数 (BLOB_FILE、 CLOB_FILE、DBCLOB_FILE) に割り当てられます。

Db2 は、必要に応じて、固定長ストリングを可変長ストリングに自動的に変換するか、または可変長ストリングを固定長ストリングに変換します。