データ型変換

CHAR と VARCHAR

DRDA サービスは、ソース データの長さに基づいて、これらのソース DB2 からこれらのターゲット SQL Server データ型に変換します。

  • CHAR () 8K より大きい FOR BIT は VARBINARY(MAX) にマップされます。

  • 8K より大きい CHAR () は VARCHAR(MAX) にマップされます。

CHAR|VARCHAR () FOR BIT

ソース パッケージ定義とバインド コピー オプションに応じて、CHAR 型のパラメーターを持つ SQL コマンド |VARCHAR () FOR BIT は DRDA BGNBND BNDSQLSTT で CHAR としてエンコードできます。VARCHAR (CCSID=37, 277, 1208) (CHAR としてではなく) |VARCHAR (65535)、または CHAR|VARCHAR ( ) FOR BIT または BINARY|Varbinary。 このパラメーター データ型エンコードの問題により、ターゲット SQL Server 列が BINARY の場合、CREATE PROCEDURE プロセスへのバインド コピーが失敗する可能性があります。Varbinary。 この問題を解決するために、MsDrdaService は CREATE DRDA BNDSQLSTT から SQL Server CREATE PROCEDURE エラーを自動的にキャプチャし、ストアド プロシージャ パラメーターのデータ型を修正する SQL Server カタログから列メタデータを取得してから、CREATE PROCEDURE ステートメントを再実行します。

VARCHAR 列が CHAR パラメーターにマップされる

DRDA サービスは、DRDA BNDSQLSTT (BIND SQL ステートメント) コマンドを SQL Server CREATE PROCEDURE ステートメントに処理し、DB2 DRDA データ型を対応する SQL Server T-SQL データ型に変換します。 DRDA BNDSQLSTT では、DB2 および SQL Server VARCHAR 列のデータ型に対する読み取りと書き込みを行う CHAR パラメーター型が定義されます。 DB2 for z/OS IVT (インストール検証テスト) サンプル・プログラムの静的 SQL パッケージ・DSN8HC91を参照してください。DSN8HC3および対応する SQL Server テーブルと DB2 テーブル。

CREATE TABLE DEPT (  
DEPTNO CHAR(3) NOT NULL,  
DEPTNAME VARCHAR(36) NOT NULL,  
MGRNO CHAR(6) WITH DEFAULT NULL,  
ADMRDEPT CHAR(3) NOT NULL,  
LOCATION CHAR(16) WITH DEFAULT NULL  
)  
AUDIT NONE  
DATA CAPTURE NONE   
CCSID EBCDIC;  
  

DB2 CREATE TABLE ステートメントの例。

  
CREATE TABLE [DSN8910].[DEPT]([DEPTNO] [char](3) NOT NULL,  
[DEPTNAME] [varchar](36) NOT NULL,  
[MGRNO] [char](6) NULL,  
[ADMRDEPT] [char](3) NOT NULL,  
[LOCATION] [char](16) NULL) ON [PRIMARY]  
  

SQL Server CREATE TABLE ステートメントの例。

UPDATE VHDEPT SET DEPTNAME = :H, MGRNO = :H, ADMRDEPT = :H, LOCATION = :H WHERE DEPTNO = :H  

DB2 埋め込み静的 SQL ステートメントの例。

  
CREATE PROCEDURE [DSN8910].[DSN8HC3_18BBB2BA1492DAC8_24]  
    @P0 char(36)   
   ,@P1 char(6)   
   ,@P2 char(3)   
   ,@P3 char(16)   
   ,@P4 char(36)   
AS  
UPDATE VHDEPT  
SET    DEPTNAME = @P0,  
       MGRNO    = @P1,  
       ADMRDEPT = @P2,  
       LOCATION = @P3  
WHERE  DEPTNO = @P4;  
  
RETURN @@ROWCOUNT;  
  

SQL Server CREATE PROCEDURE ステートメントの例。

BLOB と CLOB

DB2 BLOB と CLOB の MsDrdaService のサポートは制限されています。 MsDrdaService では、SQL Server VARBINARY(MAX) にマップされた DB2 BLOB データ型がサポートされ、IMAGE へのマッピングは省略可能です。 MsDrdaService では、SQL Server VARCHAR(MAX) にマップされた DB2 CLOB データ型がサポートされ、TEXT と NTEXT へのマッピングは省略可能です。

動的 SQL BLOB と CLOB

  • IMAGE との間の BLOB

  • VARBINARY(MAX) との間の BLOB

  • テキストとの間の CLOB

  • NTEXT との間の CLOB

  • VARCHAR(MAX) との間の CLOB

    静的 SQL BLOB と CLOB は、これらのデータ型マッピングを使用して限られた方法で動作します。

  • 入力パラメーター

    • BLOB から VARBINARY(MAX)

    • CLOB から VARCHAR(MAX)

  • 出力パラメーター

    • BLOB から VARBINARY(MAX)

    • CLOB から VARCHAR(MAX)

    • CLOB から TEXT

    • CLOB から NTEXT

    既定のデータ型マッピングを利用することをお勧めします。

    ntext、text、および image データ型は、今後のバージョンの Microsoft SQL Server で削除される予定です。 新しい開発作業では、これらのデータ型の使用は避け、現在これらのデータ型を使用しているアプリケーションは修正するようにしてください。 代わりに nvarchar(max)、varchar(max)、varbinary(max) を使用してください。

    大きな非 Unicode 文字および Unicode 文字とバイナリ データを格納するための固定長および可変長のデータ型。 Unicode データでは、UNICODE UCS-2 文字セットが使用されます。

    ntext、text、image (Transact-SQL) を参照してください。