SQLTP2xx ユーティリティ - 動的 SQL 文の実行

注: これは技術評価機能としてのみ提供されます。この新機能について、テストおよびフィードバックができるようになる予定です。ただし、この機能は本番環境での使用を目的としたものではなく、本番環境での使用はサポートされていません。また、この機能は GA レベルでの提供が保証されるものではないため、実際提供されるバージョンは技術評価版と大きく異なる可能性があります。

SQLTP2xx ユーティリティは DB2 DSNTEP2 に相当します。データベース接続が確立されている場合、これを使用して、JCL に埋め込まれた動的 SQL 文を実行します。データベース移行プロセスでは、これを使用して DBMS に対して DDL を実行し、スキーマ オブジェクトを作成および変更します。

重要: メインフレームの DB2 と他の DBMS では参照整合性の実装に違いがあるため、初期 DSNTEP2 ステップを含めてテーブルを作成することをお奨めします。データのロード後、追加の DSNTEP2 ステップを実行して、索引および制限事項を作成できます。

SQLTP2xx の実行

SQLTP2xx ユーティリティを使用するには、JCL アプリケーション プロジェクトを作成するか、Enterprise Server の JES CONTROL 機能を使用して JCL を直接サブミットします。JCL 構文は、DB2 互換である必要があります。

SQL 文には、SQL Server 方言ではなく DB2 方言を使用します。DSNTEP2 プログラムは、SQL 文を SQL Server に送信して実行する前に、ESQL ランタイムを呼び出して方言の変換を処理します。SQL 文に SQL Server 固有の構文が含まれる場合は、エラーが発生します。例えば、SQL Server 方言では NULL 可能カラムのカラム定義に明示的な NULL を使用できますが、DB2 方言では NULL はサポートされていません。

SQL 文を処理するための 2 つのオプションが用意されています。ネイティブの DBMS SQL 方言 (非依存) を使用するか、DDL 文とともに SQL Server 用の DB2 方言 (HCOSS) を使用することができます。2 番目のオプションでは、SQLTP2xx ユーティリティは、SQL 文を方言に変換してから SQL Server に送信して実行するよう ESQL ランタイムに命令します。MBDT 構成ユーティリティを使用して、このどちらかのオプションを選択します。

SQL Server 用の DB2 方言を使用した CREATE TABLE 文の JCL の例を次に示します。

//DDLJOB2 JOB 
//RESETDB  EXEC PGM=IKJEFT01
//SYSTSPRT DD  SYSOUT=*
//SYSPRINT DD  SYSOUT=*
//SYSPUNCH DD  SYSOUT=*                                
//SYSREC00 DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*
//SYSOUT   DD  SYSOUT=*
//SYSTSIN  DD  *
 DSN SYSTEM(HCOD)
 RUN  PROGRAM(DSNTEP2)
 END
/*
//SYSIN DD *
CREATE TABLE HCOSQL.EMP
(
EMPNO       CHAR(6) NOT NULL,
FIRSTNME    VARCHAR(12) NOT NULL,
MIDINIT     CHAR(1) NOT NULL,
LASTNAME    VARCHAR(15) NOT NULL,
WORKDEPT    CHAR(3),
PHONENO     CHAR(4),
HIREDATE    DATE,
JOB         CHAR(8),
EDLEVEL     SMALLINT,
SEX         CHAR(1),
BIRTHDATE    DATE,
SALARY      DECIMAL(9,2),
BONUS       DECIMAL(9,2),
COMM        DECIMAL(9,2),
PRIMARY KEY (EMPNO)
) IN XDBIBMDB.XDBIBMTS;

/*
//

ここで、HCOD は DSN 名です。SQLTP232 は DSNTEP2 のエイリアスとして確立されています。セミコロン (;) は SQL ターミネータです。

データ型

DB2 データ型と SQL Server データ型には、一部違いがあります。DSNTEP2 ユーティリティは、HCOSS 変換に次のデータ タイプ マッピングを使用します。

DB2 データ型 SQL Server データ型
INTEGER INTEGER
BIGINT BIGINT
SMALLINT SMALLINT
DOUBLE FLOAT(53)
FLOAT(n) FLOAT(n)
REAL REAL
DECIMAL(p,s) DECIMAL(p,s)
CHAR CHAR
VARCHAR(n) n <= 8000 VARCHAR(n)
VARCHAR(n) n > 8000 VARCHAR(max)
GRAPHIC NCHAR
VARGRAPHIC NVARCHAR
DATE DATE
TIME TIME(0)
TIMESTAMP DATETIME2(6)
BINARY* BINARY
CHAR FOR BIT DATA* BINARY
BLOB* VARBINARY(max)
CLOB* NVARCHAR(max)
XML* XML
* SQLUTBxx ユーティリティではサポートされていません。

パラメーター

サポートされている SQLTP2xx パラメーターは、次のとおりです。

  • ALIGN (MID), ALIGN(LHS)
  • MIXED, NOMIXED
  • TOLWARN(YES), TOLWARN(NO)
  • SQLTERM ( termchar )

制御文

DSNTEP2 では、SYSIN データ セットの制御文は次の構文を使用します。
--#SET control-option-value
ここで、control-option-value には、次のいずれかを指定できます。
  • TERMINATOR
  • ROWS_FETCH
  • ROWS_OUT
  • MAXERRORS
  • TOLARTHWRN
  • TOLWARN
次の制御オプション値およびエラー発生値はサポートされていません。
  • MULTI-FETCH
  • PREPWARN
  • SQLFORMAT