Conversiones de tipos de datos

CHAR y VARCHAR

En función de la longitud de los datos de origen, el servicio DRDA convertirá de estos tipos de datos de ORIGEN DB2 a estos tipos de datos de SQL Server de destino.

  • CHAR () FOR BIT mayor que 8K se asigna a VARBINARY(MAX).

  • CHAR () mayor que 8K se asigna a VARCHAR(MAX).

CHAR|VARCHAR () FOR BIT

En función de la definición del paquete de origen y enlazar opciones de copia, comandos SQL con parámetros de tipo CHAR|VARCHAR () FOR BIT se puede codificar en DRDA BGNBND BNDSQLSTT como CHAR|VARCHAR (CCSID=37, 277, 1208) y no como CHAR|VARCHAR (65535) o CHAR|VARCHAR ( ) FOR BIT o BINARY|VARBINARY. Este problema de codificación de tipo de datos de parámetros puede provocar un error en la copia de enlace al proceso CREATE PROCEDURE, si las columnas de SQL Server de destino son BINARY|VARBINARY. Para resolver este problema, MsDrdaService capturará automáticamente el error CREATE DRDA BNDSQLSTT en SQL Server CREATE PROCEDURE, obtendrá metadatos de columna del catálogo de SQL Server con el que corregir los tipos de datos de parámetros de procedimiento almacenado y, a continuación, volverá a ejecutar la instrucción CREATE PROCEDURE.

Las columnas VARCHAR se asignan a parámetros CHAR

El servicio DRDA procesará los comandos DRDA BNDSQLSTT (Bind SQL Statement) en instrucciones CREATE PROCEDURE de SQL Server, transformando los tipos de datos DRDA de DB2 en los tipos de datos T-SQL correspondientes de SQL Server. El BNDSQLSTT de DRDA definirá los tipos de parámetro CHAR para leer y escribir en los tipos de datos de columna DB2 y SQL Server VARCHAR. Vea, por ejemplo, el programa de ejemplo DB2 for z/OS IVT (prueba de comprobación de instalación) del paquete SQL estático DSN8HC91. DSN8HC3 y las tablas de SQL Server y DB2 correspondientes.

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;  
  

Ejemplo de instrucción 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]  
  

Ejemplo de instrucción CREATE TABLE de SQL Server.

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

Ejemplo de la instrucción SQL estática insertadaDB2.

  
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;  
  

Ejemplo de instrucción CREATE PROCEDURE de SQL Server.

BLOB y CLOB

La compatibilidad de MsDrdaService con BLOB y CLOB de DB2 está limitada. MsDrdaService admite el tipo de datos DB2 BLOB asignado a SQL Server VARBINARY(MAX), con una asignación opcional a IMAGE. MsDrdaService admite el tipo de datos CLOB DB2 asignado a SQL Server VARCHAR(MAX), con asignaciones opcionales a TEXT y NTEXT.

BLOB y CLOB dinámicos de SQL

  • BLOB hacia y desde IMAGE

  • BLOB hacia y desde VARBINARY(MAX)

  • CLOB hacia y desde TEXT

  • CLOB hacia y desde NTEXT

  • CLOB hacia y desde VARCHAR(MAX)

    Blob y CLOB de SQL estático funcionan de maneras limitadas con estas asignaciones de tipos de datos.

  • Parámetros de entrada

    • BLOB a VARBINARY(MAX)

    • CLOB a VARCHAR(MAX)

  • Parámetros de salida

    • BLOB a VARBINARY(MAX)

    • CLOB a VARCHAR(MAX)

    • CLOB a TEXT

    • CLOB a NTEXT

    Microsoft recomienda usar las asignaciones de tipos de datos predeterminadas.

    Los tipos de datos ntext, text e image se quitarán en una versión futura de Microsoft SQL Server. Evite su uso en nuevos trabajos de desarrollo y piense en modificar las aplicaciones que los usan actualmente. Use nvarchar(max), varchar(max) y varbinary(max) en su lugar.

    Tipos de datos de longitud fija y variable para almacenar valores de gran tamaño con datos de caracteres y binarios Unicode y no Unicode. Los datos Unicode usan el juego de caracteres UCS-2 UNICODE.

    Consulte ntext, text e image (Transact-SQL).