SQLWays Documentation 
データベースおよびアプリケーション 
移行ソフトウェア
Version 6.0 
Ispirer Systems Ltd. 
Copyright © 1999-2015 Ispirer Systems Ltd. Ispirer and SQLWays are trademarks of Ispirer Systems Ltd. All other product names may be trademarks of the respective companies. All rights reserved. www.ispirer.com 
Contents 
   目次 
     このマニュアルでの表記規則 
  イントロダクション 
主な利点 ............................................................................... 13 サポートデータベース .............................................................. 14 データベースオブジェクトと機能のサポート .................................. 16 
IBM DB2 for Linux, Unix および Windows のサポート ....................... 17 IBM DB2 for z/OS および OS/390 のサポート ................................. 19 IBM DB2 for iSeries および AS/400 のサポート ............................... 21 Oracle のサポート ...................................................................... 23 Microsoft SQL Server のサポート ................................................. 25 MySQL のサポート ..................................................................... 27 PostgreSQL のサポート ................................................................ 29 Sybase Adaptive Server Enterprise のサポート ................................ 31 Pervasive.SQL のサポート ............................................................ 32 
What’s New....................................................................... 33 
  Getting Started 
インストールの準備 ................................................................ 35 SQLWaysのインストール........................................................ 36 SQLWaysの使用開始 ............................................................. 37 
  データベース移行のコンセプト 
SQLWaysの移行プロセス...................................................... 39 
移行プロセスのステージ ................................................................ 40 
Stage 1. エクスポートおよび変換 .............................................. 41 
IBM DB2へのインポート用に作成されるファイル ...................... 42 Oracleへのインポート用に作成されるファイル .......................... 43 Microsoft SQL Serverへのインポート用に作成されるファイル ..... 44 MySQLへのインポート用に作成されるファイル ......................... 45 
Stage 2. 転送および処理（オプション） ..................................... 46 Stage 3. インポート ............................................................... 47 
データベースの比較分析 ........................................................... 48 
識別子 ..................................................................................... 49 
識別子の最大長...................................................................... 50 
Contents 
3 SQLWays Documentation Copyright © 1999-2015 
識別子に使用できる文字 ........................................................... 51 区切り識別子 ........................................................................ 52 
式とステートメント .................................................................... 54 
変数の宣言 ........................................................................... 55 
変数宣言を Microsoft SQL Server から MySQLへ変換 ................... 58 Informixの変数宣言をOracleに変換 ...................................... 59 Oracle %ROWTYPE を MySQLへ変換 ................................... 60 Oracle %TYPE を Microsoft SQL Serverへ変換 ...................... 62 複合データ型のローカル変数の宣言 ........................................ 63 Oracle RECORD 変数を Microsoft SQL Serverへ変換 ............... 64 
代入ステートメント ................................................................ 65 
代入ステートメントを Microsoft SQL Server からOracleへ変換 ... 66 
条件式 ................................................................................. 67 
Oracle DECODE を MySQL CASEへ変換 ............................... 71 
SELECT ステートメント ........................................................... 72 
結果セット内のローの数を制限 ............................................... 73 
Microsoft SQL Server TOP 句を Oracleへ変換 ......................... 74 
プロシージャやユーザ定義関数の実行 ........................................... 76 
プロシージャやユーザ定義関数の実行を Microsoft SQL Server から Oracleへ変換 ................................................................................ 79 Sybase Adaptive Server Anyware CALLをMicrosoft SQL Serverに変換 ................................................................................ 80 
パラメータ付き動的 SQL ステートメントの実行............................... 81 
動的ステートメントの実行をMicrosoft SQL Server から Oracleへ変換 ................................................................................ 84 
カーソル............................................................................... 85 
カーソル宣言 .................................................................... 86 
カーソル宣言のMicrosoft SQL Server からOracleへの変換......  87 
パラメータ付きカーソルのOracleからMySQLへの変換 ................ 88 
トランザクション制御  ............................................................. 89 
トランザクションの開始 ...................................................... 90 BEGIN TRANSACTIONの Microsoft SQL Serverから Oracleへの変換 ................................................................................. 91 COMMIT ステートメント ..................................................... 92 COMMITのMicrosoft SQL Server から Oracleへの変換 ............. 93 
関数 ........................................................................................ 94 
数値関数 ............................................................................. 95 
文字列を数値に変換 ............................................................ 96 
文字関数............................................................................ 100 
文字列の結合 .................................................................. 101 式を文字列に変換 .............................................................. 103 ASCII コードを文字に変換 ................................................. 107 書式付日時式を文字列に変換 ................................................. 109 書式付 Oracle TO_CHAR(datetime) をMySQLへ変換 .............. 115 文字列から部分列を返す ...................................................... 118 
Contents 
部分文字列を返すMicrosoft SQL Server関数をOracleへ変換 ......120 
文字列を大文字に変換して返す .............................................. 121 
文字列の中の部分列の位置を返す .......................................122 
Microsoft SQL Serverの CHARINDEX を Oracleへ変換 ............ 127 文字列から文字を削除 (またはトリム) する ............................. 128 
Sybase Adaptive Server AnywareのTRIMをMicrosoft SQL Serverへ変換 ............................................................................. 129
 データベースと現在のコネクションの情報を返す  ........................ 130 
現在のユーザの情報を返す ................................................ 131 
NULL 値を置き換える関数 ....................................................... 132 
最初の非NULL式を返す ..................................................... 133 検査式がNULLか否かにより一つの式を返す ............................... 136 
Sybase ASA IFNULL をMicrosoft SQL Serverへ変換 ............137 
技法 ....................................................................................... 138 
結果セットとして非テーブルデータ（ダミーテーブル）を返す ........ 139 
非テーブル結果セットのSybase Adaptive Server Anywhere から Microsoft SQL Serverへの変換 ...................................... 140 
プロシージャからの結果セットを返す .................................... 141 結果セットをクライアントへ返す ......................................... 142 
結果セットをMicrosoft SQL ServerからIBM DB2へ変換 ........ 143 
IBM DB2への移行 .................................................................144 
IBM DB2 データ型 .................................................................... 145 
CHAR, VARCHARおよびLONG VARCHAR................................. 146 GRAPHIC, VARGRAPHIC および LONG VARGRAPHIC ................. 147 BIGINT, INTEGER および SMALLINT...................................... 148 DECIMAL または NUMERIC................................................... 149 FLOAT, REAL および DOUBLE................................................ 150 DATE, TIME および TIMESTAMP ........................................... 151 BLOB, CLOB および DBCLOB................................................ 152 DATALINK ......................................................................... 153 
IBM DB2 関数および式 .............................................................. 154 
IBM DB2 の式 .................................................................... 155 
単純な CASE 式 ............................................................... 156 
IBM DB2 の関数 .................................................................. 157 
COALESCE .................................................................... 158 LEFT ............................................................................ 159 LENGTH ....................................................................... 160 RIGHT .......................................................................... 161 
IBM DB2 特殊レジスター....................................................... 162 
CURRENT TIMESTAMP .................................................... 163 
IBM DB2 LOAD コマンド ............................................................ 164 
LOAD コマンドのオプション .................................................. 165 
IBM DB2 のバージョンの差異 ....................................................... 166 
LOAD コマンド .................................................................. 167 
Oracleへの移行 ...................................................................168 
Oracle データ型 ....................................................................... 169 
CHAR, NCHAR, VARCHAR2 および NVARCHAR2 ...................... 170 
Contents 
5 SQLWays Documentation Copyright © 1999-2015 
NUMBER および FLOAT ........................................................ 171 DATE および TIMESTAMP ..................................................... 172 INTERVAL YEAR TO MONTH および INTERVAL DAY TO SECOND . 173 LONG, RAW および LONG RAW ............................................. 174 BLOB, CLOB, NCLOB および BFILE ......................................... 175 ROWID および UROWID ....................................................... 176 
Oracle 関数と式 ....................................................................... 177 
Oracle の式 ........................................................................ 178 
DECODE 式 ................................................................... 179 
Oracle の関数 ..................................................................... 180 
LENGTH ....................................................................... 181 NVL ............................................................................. 182 SUBSTR ....................................................................... 183 SYSDATE ...................................................................... 184 
Oracle 予約語 ......................................................................... 185 Oracle のバージョンによる差異 .................................................... 187 
TIMESTAMP データ型 ........................................................... 188 
Microsoft SQL Serverへの移行 ............................................189 
Oracle から Microsoft SQL Serverへの移行 .................................... 190 
Microsoft SQL Server と Oracle の関数と式 ............................. 191 
Sybase から Microsoft SQL Serverへの移行 ................................... 192 
Microsoft SQL Server と Sybase のデータ型の差異  ..................... 193 
Microsoft SQL Server のデータ型 .............................................. 195 
char, nchar, varchar および nvarchar .................................... 196 bigint, int, smallint および tinyint .......................................... 197 datetime および smalldatetime ............................................. 198 money および smallmoney ................................................... 199 decimal および numeric ....................................................... 200 float および real.................................................................. 201 text および ntext ................................................................ 202 binary, varbinary および image ............................................. 203 bit, uniqueidentifier および timestamp ................................... 204 
Microsoft SQL Server 関数と式 ................................................... 205 
SQL Server の式 ................................................................. 206 
単純なCASE 式 ................................................................ 207 
SQL Server の関数 .............................................................. 208 
COALESCE .................................................................... 209 GETDATE ...................................................................... 210 ISNULL ........................................................................ 211 LEFT ............................................................................ 212 LEN ............................................................................. 213 RIGHT .......................................................................... 214 SUBSTRING .................................................................. 215 
Microsoft SQL Server のバージョンによる差異 ............................... 216 
bigint データ型 ................................................................... 217 INFORMATION_SCHEMA.ROUTINESビュー ............................. 218 
Sybaseへの移行 ..................................................................219 
Sybase Adaptive Server Enterprise (ASE) .................................. 220 
Contents 
Sybase ASE のデータ型 ...................................................... 221 char, nchar, varchar および nvarchar ................................ 222 int, smallint および tinyint .............................................. 223 datetime および smalldatetime ......................................... 224 money および smallmoney ............................................... 225 decimal および numeric ................................................... 226 float, double precision および real ..................................... 227 text ............................................................................. 228 binary, varbinary および image ........................................ 229 bit および timestamp ....................................................... 230 
Sybase ASE の歴史 ............................................................... 231 Sybase ASE のバージョンの進化 .............................................. 232 
Sybase Adaptive Server Anywhere (ASA) .................................... 242 
Sybase ASA のデータ型 ..................................................... 243 char, varchar および long varchar ..................................... 244 bigint, int or integer, smallint および tinyint ........................ 245 date, datetime, smalldatetime, time および timestamp ........ 246 money および smallmoney ............................................... 247 decimal および numeric ................................................... 248 float, double および real .................................................. 249 text ............................................................................. 250 binary, long binary, varbinary および image ....................... 251 bit ................................................................................ 252 
Sybase ASA の歴史 ............................................................... 253 Sybase ASA のバージョンの進化 .............................................. 254 
MySQLへの移行 ..................................................................261 
MySQL のデータ型 ................................................................... 262 
CHAR, NCHAR および VARCHAR ............................................ 263 BIGINT, INT, INTEGER, MEDIUMINT, SMALLINTおよびTINYINT.. 264 DECIMAL, DEC および NUMERIC............................................ 265 FLOAT .............................................................................. 266 DOUBLE, DOUBLE PRECISION および REAL............................. 267 DATE, TIME, DATETIME, TIMESTAMP および YEAR ................... 268 TINYBLOB, BLOB, MEDIUMBLOB および LONGBLOB ................. 269 TINYTEXT, TEXT, MEDIUMTEXT および LONGTEXT ................... 270 BIT および BOOL................................................................. 271 ENUM および SET................................................................ 272 
MySQL の予約語 ...................................................................... 273 MySQLへのデータインポート ...................................................... 276 
Pervasive.SQLへの移行 .......................................................277 
Pervasive.SQL のデータ型 .......................................................... 278 
CHAR および VARCHAR ........................................................ 279 BIGINT, UBIGINT, INTEGER, UINTEGER, SMALLINT, USMALLINT, TINYINT および UTINYINT ................................................................ 280 DATE, TIME および TIMESTAMP ............................................ 281 DECIMAL, NUMERIC, NUMERICSA および NUMERICSTS ............ 282 MONEY および CURRENCY .................................................... 283 FLOAT, REAL, DOUBLE, BFLOAT4 および BFLOAT8 ................... 284 
7 SQLWays Documentation Copyright © 1999-2015 
LONGVARCHAR .................................................................. 285 BINARY および LONGVARBINARY .......................................... 286 BIT, IDENTITY および SMALLIDENTITY................................... 287 
テーブル ............................................................................288 
カラムのデフォルト値 ............................................................... 289 
DEFAULT 構文を MySQLへ変換 ............................................... 290 DEFAULT 値を IBM DB2 からOracleへ変換 ................................ 291 
テーブルのドロップ .................................................................. 292 テーブルのインポート ................................................................... 293 
アプリケーション移行のコンセプト
Progress 4GLからC# .NET への移行 ........................................ 295 PowerBuilder の移行............................................................. 296 Oracle PL/SQLからJava への移行............................................. 297 
ユーザーズガイド
SQLWays ウィザード....................................................... 299 ウェルカムページ .................................................................... 300 Step 1- ソースデータベースの選択 .............................................. 301 Step 2- ターゲットデータベースの選択 .......................................... 302 
IBM DB2 Advanced オプション ............................................... 303 Oracle Advanced オプション .................................................. 305 Microsoft SQL Server Advanced オプション ............................... 307 Sybase Adaptive Server Enterprise Advanced オプション .......... 308 MySQL Advanced オプション.................................................. 309 Pervasive.SQL Advanced オプション ....................................... 310 
Step 3- データベースオブジェクトやクエリの指定 .......................... 311 Step 4 - DDL および Data オプションの指定 ................................... 312 
DDL オプション ................................................................... 313 Data オプション .................................................................. 315 
Step 5 – エクスポートファイルオプションの指定 ......................... 318 Step 6 - インポートオプションの指定 ....................................... 320 
SQLWays コマンドライン ................................................. 321 
コマンドラインオプション .......................................................... 322 
/D - データソース名 (ODBC エイリアス).................................... 325 /U – ユーザ名 ..................................................................... 326 /P – パスワード .................................................................. 327 /T - テーブル名、リストまたはテンプレート ............................... 328 /V – ビュー名、リストまたはテンプレート................................. 329 /SP – ストアドプロシージャ 名、リストまたはテンプレート ........... 330 /FN – ファンクション 名、リストまたはテンプレート.................... 331 /TG – トリガ名、リストまたはテンプレート ............................... 332 
/PKG – パッケージ名、リストまたはテンプレート ....................... 333 /F - スクリプトファイルのパス、名前、リストまたはテンプレート... 334 /FF - スクリプトファイルのパス、名前、リストまたはテンプレートを含むテキストファイル ........................................................................................................ 335 /S - SELECT ステートメント ................................................... 336 /SF - SELECT ステートメントが記述されたファイル  ......................... 337 /EXC – 変換から除外するカラムのリスト ................................. 338 /SROW - 開始ロー .............................................................. 339 /CNROWS - エクスポートするローの数..................................... 340 /TARGET – ターゲットデータベースの種類 ................................ 341 /TPROD - ターゲットデータベースの製品 .................................. 342 /TVER - ターゲットデータベースのバージョン ............................. 343 /TD – ターゲットデータベース................................................. 344 /TU - ターゲットデータベースのユーザ名 ................................. 345 /TP - ターゲットデータベースのパスワード ............................... 346 /MIGS - マイグレーションシーケンス ...................................... 347 /IMPS – インポートシステム .................................................. 348 /DIR – エクスポートディレクトリ  ........................................... 349 /LOBDIR - LOB ファイルのディレクトリ .................................... 350 /IMPDIR - インポートが実行されるディレクトリ ......................... 351 /IMPLOB - LOB ファイルのインポートディレクトリ ...................... 352 /OSN – 出力スキーマ (オーナ) 名 ............................................ 353 /OTN – 出力テーブル名  ........................................................ 354 /OFN – 出力ファイル名 ........................................................ 355 /OTF – 出力テキストファイル名 ............................................. 356 /EMPS - DDLステートメントでスキーマ (オーナ) 名を省略 ............. 357 /DDL - DDL ステートメントのみ生成 ......................................... 358 /OF – 出力フォーマット ....................................................... 359 /CDEL - カラム区切り文字 ..................................................... 360 /LDEL – 行区切り文字 .......................................................... 361 /DECPT – 小数点文字........................................................... 362 /STDEL – ステートメント終端文字 ......................................... 363 /LOBIN - LOB データをテキストファイル内に出力........................ 364 /TABLST - テンプレートに合致するテーブル一覧を作成................ 365 /R – プリフェッチ件数  ........................................................ 366 /INI – 初期化ファイル名  ...................................................... 367 /NSTOP – エラー発生時の継続................................................ 368 /GCMD - General コマンドファイル名  ........................................ 369 /NODDL - DDL スクリプトを生成しない ...................................... 370 /NOCMD - OS コマンドファイルを生成しない ............................. 371 /RPT – レポートファイル名 ................................................... 372 /LOG - ログファイル名 ......................................................... 373 /TRACE – トレースモードでの実行.......................................... 374 /REG – ライセンスの登録 ..................................................... 375 /UNREG - ライセンスの解除 .................................................. 376 
初期化ファイルオプション .......................................................... 377 
[Common] サブセクション .................................................... 378 [Data] サブセクション .......................................................... 379 [DDL] サブセクション .......................................................... 382 [Windows] サブセクション .................................................... 386 [Unix] サブセクション .......................................................... 387 [Oracle] サブセクション ....................................................... 388 
[IBM DB2] サブセクション ................................................... 390 [MSSQL] サブセクション ...................................................... 392 [Sybase] サブセクション.......................................................  393 [MySQL] サブセクション ..................................................... 394 [Pervasive] サブセクション ................................................... 395 [Formatting] サブセクション ................................................. 396 
コマンドラインのヒント .......................................................... 397 
リターンコード .................................................................. 398 OS 特殊文字の使用 ............................................................... 399 
ODBC データソースのセットアップ .......................................400 
Sybase Adaptive Server AnywhereへのODBC接続の構成 ................ 401 
Sybase Adaptive Server Anywhere ドライバ ............................. 402 
ODBC Sybase ASA Driver Setup ダイアログ： ODBC タブ ......... 403 ODBC Sybase ASA Driver Setup ダイアログ：Login タブ ......... 406 ODBC Sybase ASA Driver Setup ダイアログ：Database タブ .... 408 ODBC Sybase ASA Driver Setup ダイアログ：Network タブ .... 410 ODBC Sybase ASA Driver Setup ダイアログ：Advanced タブ ... 413 Certicom Encryption Options ダイアログ ............................. 414 
Sybase Adaptive Server IQ ドライバ ..................................... 415 Sybase Adaptive Server Enterprise ドライバ ............................ 416 
ASE 12 ODBC ドライバ ................................................... 417 System 11 ODBC ドライバ .............................................. 419 
Sybase Adaptive Server EnterpriseへのODBC接続の構成 ................ 421 
ODBC Sybase ASE Driver Setup ダイアログ：General タブ........... 422 ODBC Sybase ASE Driver Setup ダイアログ：Advanced タブ ........ 423 ODBC Sybase ASE Driver Setup ダイアログ：Connection タブ ...... 424 ODBC Sybase ASE Driver Setup ダイアログ：Performance タブ .... 425 
MySQLへのMyODBCによる接続の構成 ......................................... 427 
SQLWays Studio ..............................................................428 
ソースおよびターゲットの選択 ........................................................ 変換の実行............................................................................... 
429 430 
SQLWays トラブルシューティングガイド 
IBM DB2 データベース ........................................................ 432 
IBM DB2へのインポート ........................................................... 433 
SQL0286N A default table space could not be found with a pagesize of at 
least "<pagesize>" that authorization ID "<user-name>" is authorized to use434 
IBM DB2からのエクスポート ...................................................... 435 
SQLSTATE 01517 - A character that could not be converted was replaced with a substitute character ................................................................ 436 
Oracle データベース ........................................................... 437 
Oracle SQL Loader が終了しない ................................................. 438 
DROP TABLE Errors, ORA-02449: unique/primary keys in table referenced by foreign keys .................................................................................... 439 
SQL*Loader-350: Syntax error - found "TIMESTAMP" .................. 440 
MySQL データベース ........................................................... 441 
9 SQLWays Documentation Copyright © 1999-2015 
LOCAL DATA INFILEコマンドによるMySQL 4.0.x へのデータインポート 
(LOCAL keyword - The used command is not allowed with this MySQL version) 442 
Access データベース ..........................................................443 
Accessからのエクスポート ..................................................... 444 
Excel Files........................................................................445 
Excel のテーブル名を指定する構文 ................................................. 446 
   よくある質問 
FAQ: データベーススキーマ (DDL) のみエクスポート ................. 448 
スキーマ名を省略するには？ ......................................................... 449 
FAQ: データのみエクスポート........................................... 450 小数点文字を変更するには？ ...................................................... 451 改行文字を変更するには？ ........................................................ 452 
SQLWaysがサポートするエクスポートファイルの形式は? .............. 453 
Ispirer Systems のリソースおよびコンタクト先 
オンラインドキュメント ........................................................ 455 テクニカルサポート ..............................................................456 注文方法 ...........................................................................457 
 法律上の表示 
SQLWays 使用許諾書........................................................... 459 商標 ..................................................................................461 
11 SQLWays Documentation Copyright © 1999-2015 
このマニュアルでの表記規則 
このマニュアルでは、以下の表記規則が使用されます
TABLE 1. 表記規則 
B 必須要素。ステートメント中に 必ず 存在します。 必須要素は角カッコがない形式です。
[B] 任意 要素。 ステートメント中に任意で 記述することができます。オプション要素は角カッコで囲まれた形式です。
B1[,BN]… リスト 要素。カンマで区切られたひとつまたはそれ以上のステートメントが含まれます。リスト要素は最初の要素と角カッコで囲まれた次の要素が続く形式です。
{B1 | B2} 選択 要素。 リストの中から いずれかひとつ の値が 必ず 存在します。 選択要素は中括弧で囲まれ、値は`|' または キーワード `OR' で区切られた形式です。
イントロダクション 
SQLWays は IBM DB2、Oracle、Microsoft SQL Server、Sybase、MySQL、PervasiveSQL等のデータベースのデータベース構造およびデータを変換することができる革新的なデータベース移行ソフトウェアです。テーブル、制約、インデックス、ビュー、ストアドプロシージャ、ファンクション、トリガを移行する事ができます。 
このドキュメントでは、SQLWaysの特徴および機能を詳しく説明しています。 
SQLWaysの優れた特徴および利点を知るには 主な利点の章を参照してください。サポート対象のデータベースとバージョンについてはサポートデータベースを参照してください。ある２つのデータベース間で変換できるデータベースオブジェクトについてはデータベースオブジェクトと機能のサポートの章を参照してください。製品の最新の更新情報は What's New を参照してください。 
SQLWays ウィザード および SQLWays コマンドラインを使った移行作業を行う方法はユーザーズガイドを参照してください。移行プロセスの概念をよく理解するためにはデータベース移行のコンセプトを参照してください。   初めてSQLWaysを使う場合は Getting Started を参照してください。
13 SQLWays Documentation Copyright © 1999-2015 
すべて揃った多機能かつ適応力の高い製品
•LOB (イメージ、バイナリデータ、フォーマット済みテキスト）および空間（GIS）データのデータ転送。テーブル（デフォルト値、ヌル、identity属性、チェックおよびユニーク制約、プライマリおよび外部キー、コメント）、インデックス、ビュー、トリガ、ストアドプロシージャ、およびファンクションの変換
•強力なデータ型変換機能の提供。データベース毎に異なるデータ型の最大サイズ等を考慮しつつ、全テーブル一律または個別のテーブル単位にデータ型の変換を適用する事が可能。
•予約語および識別名の重複を解決
•データベースオブジェクトやテーブルのカラム名の変更
柔軟性の高い、オープンかつ拡張性のある移行プロセス
•移行作業を最も柔軟性に管理することができるエクスポート／インポートプロセスを使用
•地理的に離れたデータベース間での移行が可能
•移行タスクのカスタマイズや拡張が可能なオープンフォーマットを使用
•データベース構造をSQLスクリプトへ、データをASCIIテキストファイル（CSV、SQL INSERT文、タブ区切り、固定長等の形式）へエクスポート
•移行作業を容易にするウィザード形式のユーザインターフェイスを提供
•移行プロセスの自動化を助けるSQLWaysコマンドラインツールを提供
複数のデータベースプラットフォームへの移行
•異なるプラットフォーム上で稼働するIBM DB2、Oracle、Microsoft SQL Server、Sybase、MySQLへのデータベース移行が可能
•データベースの新しいバージョンだけでなく多様なバージョンをサポート
•データのインポートには高性能なデータベースのネイティブツールを使用
•データのエクスポートおよび変換モジュールはC/C++で作成
サポートデータベース 
この章はSQLWaysがサポートするデータベースのリストを示しています。ソースデータベースはデータベース構造やデータが変換される対象です。ターゲットデータベースは移行されたデータベース構造やデータがインポートされる対象です。 
SQLWays がサポートするソースデータベースは以下の通り 
TABLE 2. サポート対象ソースデータベース  
データベース製品 バージョン 
IBM DB2 for Linux, Unix and Windows 8.2, 8.1, 7.2, 7.1, 7.0, 6.1 及びそれ以前 
IBM DB2 for z/OS, OS/390 and MVS 8.1, 7.1, 6.1, 5.2, 5.1 and 4.1 
IBM DB2 for iSeries and AS/400 V5R3, V5R2, V5R1, V4R5, V4R4 及びそれ以前 
Oracle 10g, 9i, 8i, 8.0.x and 7.x 
Microsoft SQL Server 2005, 2000, 7.0 and 6.5 
Sybase Adaptive Server Enterprise (ASE) 12.5.1, 12.5, 12.0, 11.x 及びそれ以前 
Sybase Adaptive Server Anywhere (ASA), Sybase SQL Anywhere 9.0, 8.0.x, 7.0.x, 6.0.x, 5.5 and 5.0 
Sybase IQ 12.x 
Informix Dynamic Server (IDS) 10, 9.4, 9.3, 9.2, 9.1, 7.3, 7.2, 7.1 及びそれ以前 
Informix Standard Engine (SE) 7.x, 5.x, 4.x 及びそれ以前 
MySQL 5.x, 4.x, 3.23 及びそれ以前 
PostgreSQL 8.x, 7.x and 6.x 
Progress 10.x, 9.x and 8.x 
SAP DB 7.4, 7.3 及びそれ以前 
Pervasive.SQL v8, 2000 and 7 
Microsoft Access 2003, 2000, 97, 95 and 2.0 
Interbase, Firebird 7.1, 6.x, 5.x and 4.x 
Lotus Notes 6, 5 及びそれ以前 
dBase, FoxPro, Excel, Paradox, Gupta SQLBase, Clipper and any other ODBC-compliant database 
バージョンを問わず 
SQLWays がサポートするターゲットデータベースは以下の通り 
TABLE 3. サポート対象ターゲットデータベース 
データベース製品 バージョン 
IBM DB2 for Linux, Unix and Windows 8.2, 8.1, 7.2, 7.1, 7.0, 6.1 及びそれ以前 
IBM DB2 for z/OS and OS/390 8.1, 7.1, 6.1, 5.2, 5.1 
IBM DB2 for iSeries and AS/400 V5R3, V5R2, V5R1, V4R5, V4R4 
Oracle 10g, 9i, 8i and 8.0.x 
Microsoft SQL Server 2005, 2000, 7.0 and 6.5 
MySQL 5.x, 4.x and 3.23 
PostgreSQL 8.x and 7.x 
15 SQLWays Documentation Copyright © 1999-2015 
TABLE 3. サポート対象ターゲットデータベース 
データベース製品 バージョン
Sybase Adaptive Server Enterprise 12.5.1, 12.5, 12.0, 11.x 
Sybase Adaptive Server Anywhere 9.0, 8.0.x, 7.0.x, 6.0.x, 5.5 and 5.0 
Sybase IQ 12.x 
Informix Dynamic Server (IDS) 10, 9.4, 9.3, 9.2, 9.1, 7.3, 7.2, 7.1 及びそれ以前 
Pervasive.SQL v8 
データベースオブジェクトと機能のサポート 
この章ではSQLWaysが以下のターゲットデータベースに移行する事ができるデータベースオブジェクトと機能について説明します。 
•   IBM DB2 for Linux, Unix および Windows 
•   IBM DB2 for z/OS および OS/390 
•   IBM DB2 for iSeries および AS/400 
•   Oracle 
•   Microsoft SQL Server 
•   MySQL 
•   PostgreSQL 
•   Sybase Adaptive Server Enterprise 
•   Pervasive.SQL 
17 SQLWays Documentation Copyright © 1999-2015 
IBM DB2 for Linux, Unix および Windows のサポート 
Table 4 ではSQLWaysがIBM DB2 for Linux, Unix, Windowsへ移行する事ができるデータベースオブジェクトおよび機能を示しています
データベースの詳しいバージョンについては サポートデータベースを参照してください。
TABLE 4.  IBM DB2 for Linux, Unix, Windows 向けにサポートされるデータベースオブジェクトおよび機能 
ソースターゲット - IBM DB2 for Linux, Unix and Windows
IBM DB2 for Linux, Unix and Windows
テーブル (デフォルト値、Null 及びIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー および トリガ
IBM DB2 for z/OS, OS/390 and MVS
テーブル (デフォルト値、Null 及びIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション および トリガ
IBM DB2 for iSeries and AS/400 テーブル (デフォルト値、Null 及びIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション および トリガ
Oracle テーブル (デフォルト値、Null 属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション および トリガ
Microsoft SQL Server テーブル (デフォルト値、Null 及びIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション および トリガ
Sybase Adaptive Server Enterprise テーブル (デフォルト値、Null 及びIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション および トリガ
Sybase Adaptive Server Anywhere, Sybase SQL Anywhere
テーブル (デフォルト値、Null 及びIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション および トリガ
Informix テーブル (デフォルト値、Null 及びSerial属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション 、トリガ および  4GLアプリケーション (Logic, Forms and Reports)
MySQL テーブル (デフォルト値、Null 及び自動インクリメント属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション および トリガ
PostgreSQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション および トリガ
Progress テーブル (デフォルト値、Null 属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シノニム および 4GL コード
Pervasive.SQL テーブル (デフォルト値、Null 属性、プライマリおよび外部キー）、インデックス 及びビュー
      
TABLE 4. IBM DB2 for Linux, Unix, Windows 向けにサポートされるデータベースオブジェクトおよび機能 
ソース ターゲット - IBM DB2 for Linux, Unix and Windows 
Microsoft Access テーブル (デフォルト値、Null 及びIdentity属性、プライマリおよび外部キー）およびインデックス 
Interbase, Firebird テーブル (デフォルト値、Null 属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ジェネレータ、ビュー、ストアドプロシージャ、ファンクション および トリガ   
dBase, FoxPro, Excel, Paradox, Gupta SQLBase, Clipper 及びその他ODBC準拠データベース 
テーブル (デフォルト値、Null属性、プライマリキー）およびインデックス 
19 SQLWays Documentation Copyright © 1999-2015 
IBM DB2 for z/OS および OS/390 のサポート 
Table 5 ではSQLWaysがIBM DB2 for z/OSおよびOS/390へ移行する事ができるデータベースオブジェクトおよび機能を示しています。
データベースの詳しいバージョンについてはサポートデータベースを参照してください。
TABLE 5.  IBM DB2 for z/OS および OS/390向けにサポートされるデータベースオブジェクトおよび機能 
ソースターゲット - IBM DB2 for z/OS and OS/390
IBM DB2 for Linux, Unix and Windows
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
IBM DB2 for z/OS, OS/390 and MVS
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
IBM DB2 for iSeries and AS/400 テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Oracle テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Microsoft SQL Server テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Sybase Adaptive Server Enterprise テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Sybase Adaptive Server Anywhere, Sybase SQL Anywhere
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Informix テーブル (デフォルト値、NullおよびSerial属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション、トリガ  および4GLアプリケーション (Logic, Forms and Reports)
MySQL テーブル (デフォルト値、Nullおよび自動インクリメント属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
PostgreSQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Progress テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シノニム、 4GL コード
Pervasive.SQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー）、インデックス および ビュー
      
TABLE 5.  IBM DB2 for z/OS および OS/390向けにサポートされるデータベースオブジェクトおよび機能 
ソース ターゲット - IBM DB2 for z/OS and OS/390 
Microsoft Access テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー）、インデックス 
Interbase, Firebird テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ジェネレータ、ストアドプロシージャ、ファンクション およびトリガ 
dBase, FoxPro, Excel, Paradox, Gupta SQLBase, Clipper およびその他ODBC準拠データベース 
テーブル (デフォルト値、Null属性、プライマリキー）、インデックス 
21 SQLWays Documentation Copyright © 1999-2015 
IBM DB2 for iSeries および AS/400 のサポート 
Table 6 ではSQLWaysがIBM DB2 for iSeriesおよびAS/400へ移行する事ができるデータベースオブジェクトおよび機能を示していますデータベースの詳しいバージョンについてはサポートデータベースを参照してください。
TABLE 6. IBM DB2 for iSeries および AS/400 向けにサポートされるデータベースオブジェクトおよび機能 
ソースターゲット - IBM DB2 for iSeries and AS/400
IBM DB2 for Linux, Unix and Windows
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
IBM DB2 for z/OS, OS/390 and MVS
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
IBM DB2 for iSeries and AS/400 テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Oracle テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Microsoft SQL Server テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Sybase Adaptive Server Enterprise テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Sybase Adaptive Server Anywhere, Sybase SQL Anywhere
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Informix テーブル (デフォルト値、NullおよびSerial属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション、トリガ  および4GLアプリケーション (Logic, Forms and Reports)
MySQL テーブル (デフォルト値、Nullおよび自動インクリメント属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
PostgreSQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Progress テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シノニム、 4GL コード
Pervasive.SQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー）、インデックス および ビュー
      
TABLE 6.  IBM DB2 for iSeries および AS/400 向けにサポートされるデータベースオブジェクトおよび機能 
ソース ターゲット - IBM DB2 for iSeries and AS/400 
Microsoft Access テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー）、インデックス 
Interbase, Firebird テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ジェネレータ、ストアドプロシージャ、ファンクション およびトリガ 
dBase, FoxPro, Excel, Paradox, Interbase, Gupta SQLBase, Clipper およびその他ODBC準拠データベース 
テーブル (デフォルト値、Null属性、プライマリキー）、インデックス 
23 SQLWays Documentation Copyright © 1999-2015 
Oracle のサポート 
Table 7 ではSQLWaysがOracleへ移行する事ができるデータベースオブジェクトおよび機能を示しています 
データベースの詳しいバージョンについてはサポートデータベースを参照してください。
TABLE 7. Oracle 向けにサポートされるデータベースオブジェクトおよび機能 
ソースターゲット - Oracle
IBM DB2 for Linux, Unix and Windows
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
IBM DB2 for z/OS, OS/390 and MVS
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
IBM DB2 for iSeries and AS/400 テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Oracle テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ユーザ、ストアドプロシージャ、ファンクション およびトリガ
Microsoft SQL Server テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Sybase Adaptive Server Enterprise テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Sybase Adaptive Server Anywhere, Sybase SQL Anywhere
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Informix テーブル (デフォルト値、NullおよびSerial属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション、トリガ  および4GL アプリケーション (Logic, Forms and Reports)
MySQL テーブル (デフォルト値、Nullおよび自動インクリメント属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
PostgreSQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Progress テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シノニム、 4GL コード
Pervasive.SQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー）、インデックスおよびビュー
      
TABLE 7. Oracle 向けにサポートされるデータベースオブジェクトおよび機能 
Microsoft Access テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー）、インデックス 
Interbase, Firebird テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ジェネレータ、ストアドプロシージャ、ファンクション およびトリガ  
dBase, FoxPro, Excel, Paradox, Interbase, Gupta SQLBase, Clipper およびその他ODBC準拠データベース 
テーブル (デフォルト値、Null属性、プライマリキー）、インデックス 
25 SQLWays Documentation Copyright © 1999-2015 
Microsoft SQL Server のサポート 
Table 8 ではSQLWaysがMicrosoft SQL Server へ移行する事ができるデータベースオブジェクトおよび機能を示しています
データベースの詳しいバージョンについてはサポートデータベースを参照してください。
TABLE 8. Microsoft SQL Server向けにサポートされるデータベースオブジェクトおよび機能 
ソースターゲット - Microsoft SQL Server
IBM DB2 for Linux, Unix and Windows
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
IBM DB2 for z/OS, OS/390 and MVS
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
IBM DB2 for iSeries and AS/400 テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Oracle テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ユーザ、ストアドプロシージャ、ファンクション およびトリガ
Microsoft SQL Server テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Sybase Adaptive Server Enterprise
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Sybase Adaptive Server Anywhere, Sybase SQL Anywhere
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Informix テーブル (デフォルト値、NullおよびSerial属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション 、トリガ および4GL アプリケーション (Logic, Forms and Reports)
MySQL テーブル (デフォルト値、Nullおよび自動インクリメント属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
PostgreSQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Progress テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シノニム、4GL コード
Pervasive.SQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー）、インデックス、ビュー
      
TABLE 8. Microsoft SQL Server向けにサポートされるデータベースオブジェクトおよび機能 
ソース ターゲット - Microsoft SQL Server 
Microsoft Access テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー）、インデックス 
Interbase, Firebird テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ジェネレータ、ビュー、ストアドプロシージャ、ファンクション およびトリガ 
dBase, FoxPro, Excel, Paradox, Interbase, Gupta SQLBase, Clipperおよびその他ODBC準拠データベース 
テーブル (デフォルト値、Null属性、プライマリキー）、インデックス 
27 SQLWays Documentation Copyright © 1999-2015 
MySQL のサポート 
Table 9 ではSQLWaysがMySQL へ移行する事ができるデータベースオブジェクトおよび機能を示しています 
データベースの詳しいバージョンについてはサポートデータベースを参照してください。
TABLE 9. MySQL 向けにサポートされるデータベースオブジェクトおよび機能 
ソースターゲット - MySQL
IBM DB2 for Linux, Unix and Windows
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
IBM DB2 for z/OS, OS/390 and MVS
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
IBM DB2 for iSeries and AS/400 テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Oracle テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ユーザ、ストアドプロシージャ、ファンクション およびトリガ
Microsoft SQL Server テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Sybase Adaptive Server Enterprise テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Sybase Adaptive Server Anywhere, Sybase SQL Anywhere
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Informix テーブル (デフォルト値、NullおよびSerial属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション、トリガ および 4GL アプリケーション (Logic, Forms and Reports)
MySQL テーブル (デフォルト値、Nullおよび自動インクリメント属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
PostgreSQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Progress テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シノニム、 4GL コード
Pervasive.SQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー）、インデックス、ビュー
      
TABLE 9. MySQL 向けにサポートされるデータベースオブジェクトおよび機能 
ソース ターゲット - MySQL 
Microsoft Access テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー）、インデックス 
Interbase, Firebird テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ジェネレータ、ビュー 、ストアドプロシージャ、ファンクションおよびトリガ 
dBase, FoxPro, Excel, Paradox, Interbase, Gupta SQLBase, Clipper およびその他ODBC準拠データベース 
テーブル (デフォルト値、Null属性、プライマリおよび外部キー）、インデックス 
29 SQLWays Documentation Copyright © 1999-2015 
PostgreSQL のサポート 
Table 10 ではSQLWaysがPostgreSQL へ移行する事ができるデータベースオブジェクトおよび機能を示しています 
データベースの詳しいバージョンについてはサポートデータベースを参照してください.  
TABLE 10. PostgreSQL 向けにサポートされるデータベースオブジェクトおよび機能 
ソースターゲット – PostgreSQL
IBM DB2 for Linux, Unix and Windows テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
IBM DB2 for z/OS, OS/390 and MVS テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
IBM DB2 for iSeries and AS/400 テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Oracle テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、シーケンス、ユーザ、ストアドプロシージャ、ファンクション およびトリガ
Microsoft SQL Server テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Sybase Adaptive Server Enterprise テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Sybase Adaptive Server Anywhere (ASA), Sybase SQL Anywhere
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
Informix テーブル (デフォルト値、NullおよびSerial属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション、トリガ および 4GL アプリケーション (Logic, Forms and Reports)
MySQL テーブル (デフォルト値、Nullおよび自動インクリメント属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ、ファンクション およびトリガ
PostgreSQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シーケンス、ストアドプロシージャ、ファンクション およびトリガ
Progress テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、シノニム、 4GL コード
      
TABLE 10. PostgreSQL 向けにサポートされるデータベースオブジェクトおよび機能 
ソース ターゲット – PostgreSQL 
Pervasive.SQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー）、インデックス、ビュー 
Microsoft Access テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー）、インデックス 
Interbase, Firebird テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ジェネレータ、ビュー 、ストアドプロシージャ、ファンクションおよびトリガ 
dBase, FoxPro, Excel, Paradox, Interbase, Gupta SQLBase, Clipper  およびその他ODBC準拠データベース 
テーブル (デフォルト値、Null属性、プライマリキー）、インデックス 
31 SQLWays Documentation Copyright © 1999-2015 
Sybase Adaptive Server Enterprise のサポート 
Table 11  ではSQLWaysがSybase Adaptive Server Enterprise へ移行する事ができるデータベースオブジェクトおよび機能を示しています
データベースの詳しいバージョンについてはサポートデータベースを参照してください. 
TABLE 11. Sybase Adaptive Server Enterprise 向けにサポートされるデータベースオブジェクトおよび機能 
ソースターゲット - Sybase Adaptive Server Enterprise
IBM DB2 for Linux, Unix and Windows
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、ストアドプロシージャ およびトリガ
IBM DB2 for z/OS, OS/390 and MVS
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、ストアドプロシージャ およびトリガ
IBM DB2 for iSeries and AS/400 テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、ストアドプロシージャ およびトリガ
Oracle テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、ファンクション、ストアドプロシージャ、パッケージ およびトリガ
Microsoft SQL Server テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ファンクション、ストアドプロシージャ およびトリガ
Sybase Adaptive Server Enterprise テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ファンクション、ストアドプロシージャ およびトリガ
Sybase Adaptive Server Anywhere, Sybase SQL Anywhere
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ファンクション、ストアドプロシージャ およびトリガ
Informix テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、
MySQL テーブル (デフォルト値、NullおよびIdentity属性、プライマリキー）、インデックス 
Pervasive.SQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー）、インデックス、ビュ
Microsoft Access テーブル (デフォルト値、NullおよびIdentity属性、プライマリキー）、インデックス 
Interbase, Firebird テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ジェネレータ、ビュー 、ストアドプロシージャ、ファンクションおよびトリガ
dBase, FoxPro, Excel, Paradox, Interbase, Gupta SQLBase, Clipper  およびその他ODBC準拠データベース
テーブル (デフォルト値、Null属性、プライマリキー）、インデックス 
       
Pervasive.SQL のサポート 
Table 12 ではSQLWaysがPervasive.SQL へ移行する事ができるデータベースオブジェクトおよび機能を示しています データベースの詳しいバージョンについてはサポートデータベースを参照してください。 
TABLE 12. Pervasive.SQL 向けにサポートされるデータベースオブジェクトおよび機能 
ソース ターゲット - Pervasive.SQL 
IBM DB2 for Linux, Unix and Windows 
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、ストアドプロシージャ およびトリガ 
IBM DB2 for z/OS, OS/390 and MVS 
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、ストアドプロシージャ およびトリガ 
IBM DB2 for iSeries and AS/400 テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、ストアドプロシージャ およびトリガ 
Oracle テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約、コメント）、インデックス、ビュー、ストアドプロシージャ およびトリガ 
Microsoft SQL Server テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ およびトリガ 
Sybase Adaptive Server Enterprise テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ およびトリガ 
Sybase Adaptive Server Anywhere, Sybase SQL Anywhere 
テーブル (デフォルト値、NullおよびIdentity属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ およびトリガ 
Informix テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ビュー、ストアドプロシージャ およびトリガ 
MySQL テーブル (デフォルト値、NullおよびIdentity属性、プライマリキー）およびインデックス 
PostgreSQL テーブル (デフォルト値、NullおよびIdentity属性、プライマリキー）およびインデックス 
Progress テーブル (デフォルト値、NullおよびIdentity属性、プライマリキー）およびインデックス 
Pervasive.SQL テーブル (デフォルト値、Null属性、プライマリおよび外部キー）、インデックス およびビュー  
Microsoft Access テーブル (デフォルト値、NullおよびIdentity属性、プライマリキー）およびインデックス 
Interbase, Firebird テーブル (デフォルト値、Null属性、プライマリおよび外部キー、チェックおよびユニーク制約）、インデックス、ジェネレータ、ビュー 、ストアドプロシージャ、ファンクションおよびトリガ 
dBase, FoxPro, Excel, Paradox, Interbase, Gupta SQLBase, Clipper およびその他ODBC準拠データベース 
テーブル (デフォルト値、Null属性、プライマリキー）、インデックス 
33 SQLWays Documentation Copyright © 1999-2015 
What’s New 
SQLWays のアップグレードは継続的に行われています。最新版 SQLWays 6.0 の主な機能は以下の通りです。 
•HP NonStop SQL/MX への変換をサポート
Oracleデータベースのデータ、スキーマ、ビジネスロジックをHP NonStop SQL/MX向けに変換することが可能になりました。 
•PowerBuilderの埋め込みSQLの変換を追加
このバージョンでPowerBuilderアプリケーションの埋め込みSQLの変換が可能になりました。 
•Java から C# への移行
Javaのクラス、メソッド、ファンクションをC#に変換する基本的な機能の提供を開始しました。 
•ほぼ全てのデータベースに関し変換機能が向上
新しいバージョンのSQLWaysではほぼ全てのデータベースについて変換機能の著しい向上を実現しています。 
       
Getting Started 
ここではSQLWaysをインストールして使い始める作業について説明しています。この作業は、準備作業、インストール手順、そして製品の使用開始という構成になっています。 
•   インストールの準備 
•   SQLWaysのインストール 
•   SQLWaysの使用開始 
35 SQLWays Documentation Copyright © 1999-2015 
インストールの準備 
インストールする場所
SQLWays は、ターゲットまたはソースデータベースいずれかと同じコンピュータだけでなくソフトウェアおよびハードウェア要件を満たす任意のコンピュータにインストールする事ができます。
SQLWaysが稼働するコンピュータから各データベースへアクセスできる様に、対象データベース向けのクライアントソフトウェアをインストールする必要があります。
ソフトウェア要件
•オペレーティングシステム： Windows 98, Windows ME, Windows NT 4.0, Windows 2000, Windows XP およびWindows Server 2003 
•データベースクライアントソフトウェア
•ODBC ドライバ (ソースデータベース向けのみ)
ハードウェア要件
TABLE 13. ハ ー ド ウ ェ ア 要 件  
コンピュータIntel® またはその互換 Pentium 166 MHz 以上
メモリ少なくとも 20 MB の空き容量  (より多くを推奨)
ハードディスク空き容量インストール先に最低20 MB の空きエリア 
モニタVGA 以上の 800x600 以上解像度 
ハードディスク空き容量
SQLWaysのインストール先に最低 20 MB の空き容量（エクスポートファイル用に追加エリアが必要、データ量はソースデータベースからエクスポートされた情報量に依存）
管理者レベルの権限
SQLWaysのインストールにはWindowsオペレーティングシステムの管理者権限が必要 
各ベンダのデータベースの互換性確認
サポートデータベース の章をチェックし、SQLWaysが移行対象のデータベースのバージョンをサポートしている事を確認します。
SQLWaysのインストール 
この章ではSQLWaysのインストールに関する情報を記述しています。インストールの前に、"インストールの準備" の章を参照し、必要な準備作業が済んでいることを確認してください。 SQLWays を Windows コンピュータにインストールするには、以下の作業を行います  1. SQLWays インストールパッケージを任意のフォルダに解凍し、フォルダ内の setup.exe ファイルを実行します 
2. Welcome 画面が表示されます。Next をクリックし、インストールを継続します 
3. License Agreement を確認します。 "I Agree" をクリックし、契約条件を承認します 
4. インストールする SQLWays と同じバージョンが既にインストールされている場合、2 つの選択肢があります： "Repair" または "Uninstall"。 "Repair" は以前のインストールを修復します。例えば誤って削除されたプログラムを復旧する場合。"Uninstall" はソフトウェアをコンピュータから削除します。 
実行する操作を選択し、Next をクリックして作業を継続します 
5. Next ウィンドウではインストール先ディレクトリを選択する事ができます。デフォルトでは、SQLWays は Program Files 配下にインストールされます 
オプション "Install for all users" または "Just me" のいずれかを選択します。"Install for all users" を選択すると、プログラムのショートカットが全てのユーザのPrograms メニューとデスクトップ上に作成されます。 
6. プログラムのショートカットを作成したいPrograms メニューを指定します。名前を入力し新しいフォルダを作成することもできます 
もし Do not create shortcuts チェックボックスを選択した場合、ショートカットは作成されません。この場合、プログラムの実行はインストール先ディレクトリから直接起動することになります 
7. "Install" をクリックし、インストール処理を開始します 
37 SQLWays Documentation Copyright © 1999-2015 
SQLWaysの使用開始 
インストール終了後、SQLWays は SQLWays ウィザードまたはコマンドラインツールとして使用することができます 
SQLWays ウィザードは、Run SQLWays Wizard チェックボックスを選択するとインストール終了後に自動的に起動されます。または後でStart/Programメニューから起動する事もできます 
コマンドラインツールを使用するには、Windowsのコマンドツール (Windows NT/2000/XP では cmd.exe、Windows 98/ME ではcommand.exe ) を開き、インストール先ディレクトリに移動し、SQLWays.exe を実行します 
SQLWays ウィザード とコマンドラインツールの詳しい使い方はユーザーズガイドを参照してください 
データベース移行のコンセプト 
ここではSQLWaysを使った移行プロセスのコンセプトについて説明します 
•   SQLWaysの移行プロセス 
•   データベースの比較分析 
•   IBM DB2への移行 
•   Oracleへの移行 
•   Microsoft SQL Serverへの移行 
•   Sybaseへの移行 
•   MySQLへの移行 
•   Pervasive.SQLへの移行 
•   テーブル 
•   テーブルのインポート 
39 SQLWays Documentation Copyright © 1999-2015 
SQLWaysの移行プロセス 
SQLWaysはエクスポートおよびインポートによる移行プロセスを採用しています。SQLWaysはソースデータベースの全体または一部をエクスポートしその後ターゲットデータベースへのインポートをおこないます。
この移行プロセスはデータベース移行作業を管理する最も柔軟な方法であり、ソースデータベースから情報を抽出しターゲットデータベースに同時に転送する方法には多くの利点があります。主な利点は以下の通りです：
•独立したエクスポートとインポート
各ステージ（エクスポートおよびインポート）は他のステージを行わずに何回でも繰り返し実行することができます（例えば、インポートだけを繰り返し実行したい場合、エクスポートからやり直す必要はありません）。そのため二つのステージと移行プロセスは、それぞれ最も有効なやり方に調整しながら実行することができます。
•地理的に分離されたデータベースのサポート
SQLWaysが行う移行プロセスでは地理的に分離されたデータベース間での移行を行うことができます。SQLWaysはソースとターゲットデータベースへ同時に接続する必要はありません。エクスポートしたファイルを異なる場所に転送し、そこでインポートを行うことができます。
•柔軟で拡張性の高い移行プロセス
エクスポートファイルを別のツールで処理することにより、移行プロセスを個別のプロジェクトの要件に合わせてカスタマイズする事が可能です。SQLWaysのデータベース構造（SQLファイル）やデータ（ASCIIファイル）のエクスポートファイルは一般的なオープンなフォーマットです。
SQLWaysによるデータのインポートは各データベースの高性能なデータローディングツール（例 Oracle SQL Loader）を利用して行われ、移行作業にかかる時間を大幅に短くすることができます。この点は特に大量データを扱う場合にはとても重要です。
       
移行プロセスのステージ 
移行プロセスには以下のステージがあります 
•   Stage 1. エクスポートおよび変換 
•   Stage 2. 転送および処理（オプション） 
•   Stage 3. インポート 
41 SQLWays Documentation Copyright © 1999-2015 
Stage 1. エクスポートおよび変換 
このステージでは、SQLWays はソースデータベースの全体または特定のデータベースオブジェクトのエクスポートと変換を行います。後者の場合、以下の種類の任意のオブジェクトを選択する事ができます：
•テーブル 
•ストアドプロシージャ
•ファンクション
対象のオブジェクトを選択し、テーブル、カラム、ビュー、ストアドプロシージャ、ファンクション、トリガのそれぞれの名前を変更することができます。必要に応じてソースとターゲットデータベース間でのデフォルトのデータ型マッピング定義を変更することもできます。グローバルデータ型マッピング（全テーブル対象）またはローカルデータ型マッピング（選択したテーブルのみ）を変更することにより実現できます。さらに、変換対象のオブジェクトの属性を選択することもできます。
エクスポート処理において、SQLWaysはソースデータベースを変換し、ターゲットデータベースにデータベース構造を作成するためのSQLステートメントを含むSQL ファイルを生成します。さらに、テーブルからエクスポートされたデータが格納されたASCII ファイルとデータベースへのインポートを行うインポートスクリプトを生成します。 
エクスポートファイル
作成されるファイルはターゲットデータベース毎に異なります
•IBM DB2へのインポート用に作成されるファイル
•Oracleへのインポート用に作成されるファイル
•Microsoft SQL Serverへのインポート用に作成されるファイル
•MySQLへのインポート用に作成されるファイル
SQLWays ウィザードによりエクスポートおよび変換を行う方法 
SQLWays ウィザードを起動すると、ウェルカムページが表示されます。Next をクリックしソースデータベースを指定します。次のページでターゲットデータベースを選択します。"Specify Database Objects or Query" ページではエクスポート対象のデータベースオブジェクト (テーブル、ビューなど）を指定します。 
次の三つのウィザードページで、変換、エクスポートおよびインポートのオプションを指定します。次に Next をクリックしエクスポートを開始します。ウィザードは指定されたオプションに従いソースデータベースをエクスポートおよび変換し、指定されたターゲットデータベース向けのインポートスクリプトを生成します。
SQLWays ウィザードに関しては、ユーザーズガイドの SQLWays ウィザード を参照してください。 
SQLWays コマンドラインでエクスポートおよび変換を行うには 
Windows のコマンドライン環境を起動 (Windows NT/2000/XP では cmd.exe、Windows 9x では command.exe) し、必要なオプションを指定して sqlways.exe を実行します。SQLways.exe は指定されたオプションに従いソースデータベースをエクスポートおよび変換し、指定されたターゲットデータベース向けのインポートスクリプトを生成します。
SQLWays コマンドラインとオプションに関しては、ユーザーズガイドの SQLWays コマンドライン を参照してください。 
IBM DB2へのインポート用に作成されるファイル 
ターゲットデータベースがIBM DB2 の場合、SQLWays はソースデータベースからのエクスポートと変換において以下のファイルを作成します： 
•   SQL ファイル (.sql ) 
CLP ユーティリティによりIBM DB2 へデータベース構造（テーブル、ストアドプロシージャなど）を作成するSQLステートメントを含むSQL ファイル 
•   Data ファイル (.txt) 
データファイルはテーブルのデータのテキスト形式で格納するASCIIファイルです。各テーブル毎にファイルが作成されます 
•   インポートスクリプト (.bat) 
インポートスクリプトは IBM DB2 へのインポートを行うコマンドファイルです。インポートスクリプトはCLPユーティリティを実行しIBM DB2にデータベース構造を作成し、LOADコマンドを実行しデータのインポートを行います 
43 SQLWays Documentation Copyright © 1999-2015 
Oracleへのインポート用に作成されるファイル 
ターゲットデータベースがOracleの場合、SQLWays はソースデータベースからのエクスポートと変換において以下のファイルを作成します：
•SQL ファイル (.sql )
Oracle SQL Plus ユーティリティによりOracleへデータベース構造（テーブル、ストアドプロシージャなど）を作成するSQLステートメントを含むSQL ファイル 
•Data ファイル (.txt)
データファイルはテーブルのデータのテキスト形式で格納するASCIIファイルです。各テーブル毎にファイルが作成されます 
•制御ファイル (.ctl)
SQLWays は Oracle SQL Loader ユーティリティで Oracle へのデータファイル (.txt) のインポートを行います。制御ファイルは Oracle SQL Loader で使用され、データ構造 (データ形式、フィールド、ロー区切り、インポートオプションなど）を定義します
•インポートスクリプト (.bat)
インポートスクリプトは Oracle へのインポートを行うコマンドファイルです。インポートスクリプトはSQL Plus ユーティリティを実行しOracleにデータベース構造を作成し、Oracle SQL Loader ユーティリティを実行しデータのインポートを行います 
Microsoft SQL Serverへのインポート用に作成されるファイル 
ターゲットデータベースがSQL Serverの場合、SQLWays はソースデータベースからのエクスポートと変換において以下のファイルを作成します： 
•   SQL ファイル (.sql ) 
SQL Server ISQL ユーティリティによりSQL Serverへデータベース構造（テーブル、ストアドプロシージャなど）を作成するSQLステートメントを含むSQL ファイル 
•   Data ファイル (.txt) 
データファイルはテーブルのデータのテキスト形式で格納するASCIIファイルです。各テーブル毎にファイルが作成されます 
•   フォーマットファイル (.fmt) 
SQLWays は SQL Server BCP ユーティリティで SQL Server へのデータファイル (.txt) のインポートを行います。フォーマットファイルは BCP ユーティリティで使用され、データ構造 (データ形式、フィールド、ロー区切り、インポートオプションなど）を定義します 
•   インポートスクリプト (.bat) 
インポートスクリプトは SQL Server へのインポートを行うコマンドファイルです。インポートスクリプトは ISQL ユーティリティを実行しデータベース構造を作成し、BCP ユーティリティを実行しデータのインポートを行います 
45 SQLWays Documentation Copyright © 1999-2015 
MySQLへのインポート用に作成されるファイル 
ターゲットデータベースがMySQLの場合、SQLWays はソースデータベースからのエクスポートと変換において以下のファイルを作成します：
•SQL ファイル (.sql )
MySQL コマンドラインユーティリティによりMySQLへデータベース構造（テーブル、ストアドプロシージャなど）を作成するSQLステートメントを含むSQL ファイル 
•Data ファイル (.txt)
データファイルはテーブルのデータのテキスト形式で格納するASCIIファイルです。各テーブル毎にファイルが作成されます 
•ロードコマンドファイル (.ldi)
SQLWays は LOAD DATA INFILE コマンドで MySQL へのデータファイル (.txt) のインポートを行います。ロードコマンドファイルは MySQL コマンドユーティリティで実行され、LOAD DATA INFILE コマンドが記述されています 
•インポートスクリプト (.bat)
インポートスクリプトは MySQL へのインポートを行うコマンドファイルです。インポートスクリプトは MySQL コマンドラインユーティリティを実行しデータベース構造の作成とデータのインポートを行います
Stage 2. 転送および処理（オプション） 
このステージは、エクスポートしたファイルの転送が必要な特定の移行プロジェクトでのみ行われます。地理的に分断されたデータベース間での移行を行う場合やソースおよびターゲットデータベースに同時に接続できない特別な理由があるケースです。 
SQLWays は Windowsプラットフォームでのみ稼働しますが、Linux, Solaris, AIX, HP-UX などのUnix オペレーティングシステム向けのインポートスクリプトを生成する事ができるため、Unix サーバ上で直接インポート作業を行う事も可能です。 
SQLWays によるデータベースのエクスポートはSQLとASCIIファイルの形式で作成されるため、追加のデータ処理やレポーティング、および他の 3rdパーティ製品によって移行作業を拡張することができます。  
47 SQLWays Documentation Copyright © 1999-2015 
Stage 3. インポート 
このステージでは、前のステージ（エクスポート）で作成されたインポートスクリプトが実行され、ソースデータベースがターゲットデータベースにインポートされます。実行されたインポートスクリプトは、データベース標準のユーティリティを起動し、ターゲットデータベースにデータベース構造を作成するとともにデータをテーブルにロードします。
データベース構造の作成は以下のようなSQLステートメントを実行するコマンドラインユーティリティにより行われます： 
•SQL Plus for Oracle
•CLP (Command Line Processor) for IBM DB2
•ISQL for Microsoft SQL Server および Sybase
•MySQL command line for MySQL
ASCII ファイルからのデータロードを行うユーティリティは以下の通り： 
•SQL Loader for Oracle
•LOAD/IMPORT for IBM DB2
•BCP for SQL Server および Sybase
•LOAD DATA INFILE command for MySQL
•BUTIL for Pervasive.SQL
インポートスクリプトはコマンドファイル（Windowsは .bat ファイル、Unixは.sh シェルスクリプト) であり、SQLWays ウィザードにより自動的に実行されます。SQLWays コマンドラインでは手動で実行するか、他のスクリプトから実行します。 
これは移行プロセスの最終ステージです。これを完了すると変換済みデータベースを得ることができます。
SQLWays ウィザードによるインポートの実行方法 
"Specify Import Options" ウィザードページにて、インポートの自動開始を選択した場合、インポートはエクスポート処理の終了後すぐに開始されます。もしこのオプションを選択しなかった場合、"Migration Status" ページの "Start Import" ボタンをクリックしてインポートを開始する必要があります。後者の場合、インポートの前にエクスポート処理の結果を調べることができます。
SQLWays ウィザードの使い方は、ユーザーズガイドの SQLWays ウィザード を参照してください。 
SQLWays コマンドラインからインポートを実行する方法 
エクスポートステージにてWindows のコマンドライン環境が起動されていれば、エクスポートディレクトリで次のコマンドを入力しインポートを開始します： "sqlways_all.bat" または "sqlways_imp.exe /bat=sqlways_all.bat" 。最初のコマンドではインポートログメッセージを画面にのみ表示します。２番目のコマンドでは画面と sqlways_imp.log ファイルに出力します。 
SQLWays コマンドラインとコマンドオプションに関しては、ユーザーズガイドの SQLWays コマンドライン を参照してください。 
       
データベースの比較分析 
この章ではデータベース間の差異について説明します。各データベースはそれぞれ独自のSQL拡張、データタイプ、拡張機能を使用しており、それらはデータベース固有のもの、特定のデータベース向けのもの、他のデータベースではサポートされていないまたは文法が異なるものなど様々です。 
この章ではこれらの差異についての詳しい説明とSQLWaysがデータベースの移行でどのような変換を行うのかについて説明します。 
•   識別子 
•   式とステートメント 
•   関数 
•   技法 
49 SQLWays Documentation Copyright © 1999-2015 
この章では識別子に関する情報と様々なデータベースでの使われ方について説明します。この章によりSQLWaysがデータベースを移行する際にどの様に識別子を扱うのかを理解することができます。
•識別子の最大長
•識別子に使用できる文字
•区切り識別子
       
識別子の最大長 
Table 14 ではデータベースの識別子の最大長（文字数）を示しています 
TABLE 14. 識 別 子 の 最 大 長  
識別子 Oracle IBM DB2 Microsoft SQL Server 
Sybase MySQL Pervasive.SQL 
Unix, 
Windows 
OS/ 390 
AS/400 ASE ASA 
Table 30 128 18 128 128 30 128 64 20 
Column 30 30 18 30 128 30 128 64 20 
Primary 30 30 18 18 128 30 128 64 20 
Foreign 30 30 18 18 128 30 128 64 20 
Check 30 30 18 18 128 30 128 64 N/A 
Unique 30 30 18 18 128 30 128 64 20 
Index 30 18 18 128 128 30 128 N/A 20 
View 30 128 18 128 128 30 128 N/A 20 
Procedure 30 128 18 128 128 30 128 N/A 30 
Function 30 18 18 128 128 30 128 N/A N/A 
Trigger 30 18 8 128 128 30 128 N/A 30 
51 SQLWays Documentation Copyright © 1999-2015 
識別子に使用できる文字 
Table 15 にデータベースの識別子に使用できる文字についての情報を示します 
TABLE 15. 識 別 子 に 使 用 可 能 な 文 字  
データベース 
識別子の最初の文字 ２文字目以降 区切り文字で囲まれた識別子 
Oracle 英字英数字、 _ 、$ および # サポート
IBM DB2 Unix, Windows
英字、$、# および @ 英数字、 _ 、$、 # および @ サポート
OS/390 英字英数字および _ サポート
AS/400 英字英数字および _ サポート
Microsoft SQL Server 英字、_ 、 @ および # 英数字、 _ 、$、 # および @ サポート
Sybase ASE 英字および _ 英数字、 _ 、$、 # および @ サポート
ASA 英字および _ 英数字、 _ 、$、 # および @ サポート
MySQL 3.23.6以前 英数字、 _ および $ 英数字、 _ および $ 非サポート
3.23.6 および以降
ファイル名に使用可能な文字、但し/ および . を除く
ファイル名に使用可能な文字、但し / および . を除く
Pervasive.SQL 英字英数字および _ サポート
区切り識別子 
区切り識別子とは、通常の識別子のルールに従う必要のない識別子です。区切り識別子は、そのデータベースで区切り識別子とに使用できないとされる文字を除く任意の印字可能文字列で表されます。通常、区切り識別子はSQLの予約語を識別子として使いたい場合に用いられます。 
様々なデータベースでの区切り識別子の使用ルールは以下のテーブルの通りです 
TABLE 16. 区 切 り 識 別 子  
データベース 区切り識別子の使用ルール 
Oracle Oracleでは区切り識別子は二重引用符で囲まれた印字可能文字列です。二重引用符自身と二重引用符を除き30文字を超える文字列は使用できません。SQL予約語を区切り識別子に使用することができます。 例： SELECT book_id, "TYPE", author INTO... 標準の識別子とは異なり、Oracleの区切り識別子は大文字小文字を区別します。そのため、"TYPE" と名づけたカラム（例の通り）を"Type" または "type"という名前で参照することはできません。 
IBM DB2 Unix, Windows 
IBM DB2では、区切り識別子は二重引用符で囲まれた文字列です。もし区切り識別子で二重引用符を使いたい場合は二重引用符をスペースを空けずに２つ連続して記述します。 例えば、もしテーブルのカラム名が"Last "Name""である場合、そのカラムを参照するにはこのようにタイプしなければなりません "Last ""Name""" SQL予約語を区切り識別子に使用することができます。標準の識別子と異なり、IBM DB2の区切り識別子は大文字小文字を区別します。 
OS/390 IBM DB2 for OS/390では、区切り識別子はエスケープ文字で囲まれた文字列です。エスケープ文字通常は二重引用符 (")です。文字列の区切り文字が二重引用符に設定されている場合、エスケープ文字はアポストロフィ (')です。 SQL予約語を区切り識別子に使用することができます。 もしエスケープ文字を区切り識別子の中で使用したい場合には、エスケープ文字をスペースを空けずに２つ連続して記述します。 区切り識別子の中にダブルバイト文字がある場合にはシフト文字の使用が必要です。 
AS/400 IBM DB2 for AS/400では、区切り識別子はエスケープ文字で囲まれた文字列です。カラム名の場合のみ２つのエスケープ文字が識別子の長さに含まれます。通常エスケープ文字は二重引用符 (")です。文字列の区切り文字が二重引用府に設定されている場合、エスケープ文字はアポストロフィ (')です。SQL予約語を区切り識別子に使用する場合には大文字で記述しなければなりません。 以下の文字は区切り識別子に使用できません： X'00' から X'3F' および X'FF' 
Microsoft SQL Server Microsoft SQL Serverでは、区切り識別子はデフォルトでは二重引用符(")で囲まれた文字列です。 もし quoted_identifier オプションをoffに設定すると、角カッコ ([]) が識別子の引用符として使用され、二重引用符を区切り識別子の文字として使用することができます。SQL予約語を区切り識別子に使用することができます。 区切り識別子の長さは128文字を超えてはなりません（引用符を含まず）。識別子本体は現在のコードページの任意の文字の組み合わせが可能です。但し区切り文字自身は使用できません。  
53 SQLWays Documentation Copyright © 1999-2015 
TABLE 16. 区 切 り 識 別 子  
データベース区切り識別子の使用ルール
SybaseASE Sybase Adaptive Server Enterpriseでは、区切り識別子は二重引用符で囲まれた28文字までの識別子であり、テーブル、ビュー、カラム名に使用できます。他のデータベースオブジェクトには使用できません。区切り識別子は通常の識別子では使えない、予約語、数字や非英字から始まる識別子を使用するために用いられます。区切り識別子の参照または作成前に以下を実行しなければなりません：set quoted_identifier on quoted_identifier オプションがonに設定されている場合、文字やデータストリングを二重引用符で囲むことはできません。
ASA ASEと同様です。Adaptive Server Anywhereが異なる点は、 quoted_identifier オプションの on がデフォルト設定であり、区切り識別子の最大長は126文字です。 
MySQL 3.23.6 以前
3.23.6  
MySQLでは、区切り識別子はデフォルトではバッククォート(`) で囲まれた識別子です。MySQLがANSI モードで稼働している場合、区切り識別子に二重引用符 (" ) を使う事ができます。区切り識別子には ASCII(0), ASCII(255) または引用符文字を含むことはできません。もし予約語や特殊文字を使用する場合にはバッククォートで囲まなければなりません。例：SELECT * FROM `types` WHERE `types`.id < 10;
Pervasive.SQLPervasive.SQLでは、区切り識別子は二重引用符で囲まれた任意の文字の組み合わせであり、予約語を使用することができます。もし二重引用符を使用したい場合にはスペースを空けずに２つの二重引用符を記述します。長さは通常の識別子と同じですが２つの二重引用符を含みます。 例えば：Column_name123456789 - (通常の識別子、20 文字) "Column_name1234567" - (区切り識別子、20 文字)
式とステートメント 
このセクションではSQLWaysによる異なるデータベース間でのSQLステートメントや式の変換について記述します。 
•   変数の宣言 
•   代入ステートメント 
•   条件式 
•   SELECTステートメント 
•   プロシージャやユーザ定義関数の実行 
•   パラメータ付き動的SQLステートメントの実行 
•   カーソル 
•   トランザクション制御 
55 SQLWays Documentation Copyright © 1999-2015 
このサブセクションでは、各種データベースでのローカル変数の宣言とSQLWaysによるその変換について記述します。 
TABLE 17. ローカル変数の宣言 
データベース
Oracle
var1 datatype [{:= | DEFAULT } exp1]
DECLAREステートメントはPL/SQLブロックやサブプログラムの宣言部で変数を宣言するために使用されます。宣言により値の格納領域の割り当て、データ型の指定、格納場所の命名が行われます。
キーワード DEFAULT は変数を初期化する代入演算子の代わりに使用されます。
var1 table_name%ROWTYPE %ROWTYPE属性はデータベース表の中の行を表すレコード型を提供します。レコードの中のフィールドと、それに対応する行の中の列は、同じ名前とデータ型を持ちます。
%ROWTYPE 属性は、変数宣言の中でデータ型指定子として使用できます。%ROWTYPE 属性を使用して宣言された変数は、データ型名を使用して宣言された変数と同じように扱われます。
table_name – データベース表（またはビュー）を示し、これは宣言が処理されるときにアクセス可能なものでなければなりません。
%ROWTYPE属性はデータベース表の行データのような構造化されたレコードを宣言します。レコード中のフィールドを参照するには、ドット表記法を使用します。例えば、deptnoフィールドを参照するには以下の様にします：IF emp_rec.deptno = 20 THEN ... 特定のフィールドに式の値を代入するには以下のようにします：emp_rec.sal := average * 1.15; 
例: 下の例では、%ROWTYPEはempテーブルからSELECTした行を格納するのに使用されています ：emp_rec emp%ROWTYPE; 
次の例では、empテーブルから行をSELECTし、%ROWTYPEレコードに格納しています：DECLARE emp_rec emp%ROWTYPE; ... BEGIN SELECT * INTO emp_rec FROM emp WHERE empno = my_empno; IF (emp_rec.deptno = 20) AND (emp_rec.sal > 2000) THEN ... END IF; END;
      
TABLE 17. ローカル変数の宣言 
Database Syntax Description 
 var1 variable_name | column_name %TYPE 
%TYPE属性は変数のデータタイプを定義するのに使われます。%TYPE属性で宣言された変数は%TYPEの前に記述された変数名またはカラムと同じ属性を得ることができます。   
variable_name – この変数のデータ型が変数 var1 を宣言するのに使われます  
column_name – このカラムのデータ型が変数var1を宣言するのに使われます。column_name はカラムが定義されているテーブルまたはビュー名を含む複合句です  
例： 以下の例ではvar2 は va1 によりNUMBERデータ型として宣言されています： var1 number; var2 var1%TYPE;  
以下の例では var2 は テーブル tab1 の カラム col1 で宣言されています： 
var2 tab1.col1%TYPE; 
MySQL DECLARE var1 [, varN]… datatype [DEFAULT exp1] 
DECLARE ステートメントはローカル変数を宣言するのに使われます。  
DECLAREはBEGIN ... END 複合ステートメントの内部で使用され、他のステートメントより前に記述されなければなりません。  
変数のスコープは BEGIN ... END ブロックの中です。 
57 SQLWays Documentation Copyright © 1999-2015 
TABLE 17. ローカル変数の宣言 
DatabaseSyntaxDescription
Microsoft SQL Server
DECLARE @var1 [AS] datatype [ , 
@varN [AS] datatype]
DECLAREステートメントはプロシージャ本体で変数を宣言するために使用され、その変数が使用されるまでの任意の場所に記述が可能です。
宣言後、全ての変数はNULLに初期化されます。 
Informix DEFINE var1 [, varN] datatype DEFINEステートメントはローカル変数の宣言に使用されます。
DEFINEはストアドプロシージャの中で使用され、他のステートメントの前にステートメントブロックの最初に記述されなければなりません。
データタイプ は SERIAL、SERIAL8、BYTE、TEXT以外のものを指定可能。
DEFINE var1 [, varN] LIKE {table|synonym|view}.column
LIKE句付きのDEFINEステートメントは宣言済みのテーブルカラムと同様のローカル変数を定義するのに使われます。
Column は既存のテーブルまたはビューの任意のカラム  
注：もし、column が SERIAL または SERIAL8データ型の場合、 INT または INT8 変数として宣言されます。 
       
変数宣言を Microsoft SQL Server からMySQLへ変換 
DECLARE ステートメントは Microsoft SQL Server で変数を宣言するのに使われ、異なるデータ型の変数を宣言する事ができます。 MySQLのDECLARE ステートメントでは一つのデータ型の変数のリストを定義し、データ型は各リストの末尾に指定します。 
Microsoft SQL Server のローカル変数名 (@var) は MySQL のローカル変数名に変更されます。 記号 "@" (Microsoft SQL Server ではローカル変数を示す) は MySQLでは "v_" に変換されます。MySQL では記号 "@" はユーザ変数に使用されます。ユーザ変数はそのデータベースとのコネクションでのみ有効な変数です。ここでは、ローカル変数はプロシージャ本体でのみ有効なものでなければなりません。 
SQLWays はローカル変数名の前に "v_" を付加し、ローカル変数とカラム名を区別できるようにします。例えば： 
TABLE 18. 例： カラムが変数と同じ名前を持つ場合  ( “v_”付き)： 
Microsoft SQL Server MySQL 
select col1 from test where c=@c select col1 from test where c=v_c 
TABLE 19. 例 ：  カラムが変数と同じ名前を持つ場合 ( “v_”なし)： 
Microsoft SQL Server MySQL 
select col1 from test where c=@c select col1 from test where c=c 
SQLWays は変数のリストを定義する Microsoft SQL Server のDECLARE ステートメントをMySQLの各変数毎の DECLARE ステートメントに変換します。 
TABLE 20. 例： 変数宣言の変換 
Microsoft SQL Server MySQL 
Create procedure mssql_declare_mysql As Begin DECLARE @x INTEGER, @y CHAR end 
Create procedure mssql_declare_mysql( ) Begin DECLARE v_x INT; DECLARE v_y CHAR; end ; 
59 SQLWays Documentation Copyright © 1999-2015 
Informix の変数宣言を Oracleに変換 
Informix のDEFINE ステートメントでは、末尾にデータ型を指定した単一のデータ型の変数のリストを定義する事ができます。Oracle ではひとつの変数をデータ型を指定して宣言する事ができます。 
SQLWays は変数のリストを宣言する Informix のDEFINE ステートメントをOracle の単一の変数宣言に変換します。 
SQLWays は Informix のLIKE 句を Oracle の%TYPE 属性に変換します。 
TABLE 21. 変数宣言の変換例 
InformixOracle
create procedure with_multidef_stmt (var1 int) define a, b, c int; define d, e, f char(20); let a = 10; end procedure;
create or replace procedure with_multidef_stmt (var1 int) as a int; b int; c int; d char(20); e char(20); f char(20); begin set a := 10; end;
create procedure with_LIKE (var1 int) define i LIKE tab.c1; define j,k LIKE tab.c2; let i = 20; end procedure;
CREATE OR REPLACE PROCEDURE with_LIKE(var1 NUMBER) AS i tab.c1 %TYPE; j tab.c2 %TYPE; k tab.c2 %TYPE; BEGIN i := 20; end;
create procedure with_LIKE1 (var1 LIKE tab.c1) define i LIKE tab.c1; define j,k LIKE tab.c2; let i = 20; end procedure;
CREATE OR REPLACE PROCEDURE with_LIKE(var1 tab.c1 %TYPE) AS i tab.c1 %TYPE; j tab.c2 %TYPE; k tab.c2 %TYPE; BEGIN i := 20; end;
       
Oracle %ROWTYPEをMySQLへ変換 
Oracle の%ROWTYPE 属性はデータベースのテーブルのローを表すレコードタイプを提供します。もし %ROWTYPE を使用していれば、テーブルのカラムのデータ型やカラムの数が変更されてもアプリケーションコードはそのままで最新のカラムおよび型情報を使用することができます。これによりアプリケーションからのデータの独立性が実現され、アプリケーションのコードの保守性を高めます。 
MySQL には Oracle の%ROWTYPE と同等の機能はなく、全てのカラムに対して変数を宣言しなければなりません。 
SQLWays は Oracle の%ROWTYPE 属性を使用した変数宣言をMySQLではテーブルのカラムと同じ名前と型を持つ変数宣言のリストに変換します。  プロシージャ本体でレコードのフィールドを参照する変数が存在する場合、SQLWaysはそれを適切な変数に変換します。もしプロシージャ本体で %ROWTYPEを使った変数への代入ステートメントが存在する場合、SQLWaysは各変数への代入ステートメントのリストへ変換します。 
変換の例： 
テーブル ora_rt は２つのカラムが存在するとします： NUMBER(10) のID および VARCHAR2(10) の Name 
TABLE 22. レ コ ー ド の フ ィ ー ル ド へ の 参 照 の な い % R O W T Y P E の 使 用  
Oracle MySQL 
CREATE PROCEDURE ORA_SP_ROWTYPE (ROW1 OUT ora_rt%ROWTYPE) IS BEGIN 
SELECT ID, Name 
INTO ROW1 FROM ora_rt WHERE ID = 1; END; 
CREATE PROCEDURE ORA_SP_ROWTYPE (OUT SWV_ROW1_ID INT, OUT SWV_ROW1_NAME VARCHAR(10)) BEGIN 
SELECT ID,Name 
INTO SWV_ROW1_ID,SWV_ROW1_NAME 
FROM ora_rt WHERE ID = 1; END;/ 
注：テーブル ora_rt は２つのカラムが存在するとします： NUMBER(10) のID および VARCHAR2(10) の Name 
TABLE 23. レ コ ー ド の フ ィ ー ル ド へ の 参 照 が あ る  % R O W T Y P E  の 使 用   
Oracle MySQL 
CREATE PROCEDURE ora_sp_rowtype3 IS ROW1 ora_rt%ROWTYPE; BEGIN 
ROW1.ID := 5; ROW1.Name := 'Tenth'; 
INSERT INTO ora_rt values (ROW1.ID, ROW1.Name); END; 
CREATE PROCEDURE ORA_SP_ROWTYPE3() BEGIN 
declare SWV_ROW1_ID INT; declare SWV_ROW1_NAME VARCHAR(10); SET SWV_ROW1_ID = 5; SET SWV_ROW1_Name = 'Tenth'; INSERT INTO ora_rt 
values(SWV_ROW1_ID,SWV_ROW1_Name); END;/ 
61 SQLWays Documentation Copyright © 1999-2015 
TABLE 24. レ コ ー ド へ の 代 入 で の  % R O W T Y P E  の 使 用  
OracleMySQL
CREATE PROCEDURE ora_sp_rowtype2 IS ROW1 ora_rt%ROWTYPE; ROW2 ora_rt %ROWTYPE; BEGIN 
SELECT ID, Name 
INTO ROW1 FROM ora_rt WHERE ID = 1; ROW2 := ROW1; END;
REATE PROCEDURE ORA_SP_ROWTYPE2() BEGIN 
declare SWV_ROW1_ID INT; declare SWV_ROW1_NAME VARCHAR(10); declare SWV_ROW2_ID INT; declare SWV_ROW2_NAME VARCHAR(10); SELECT ID,Name INTO SWV_ROW1_ID,SWV_ROW1_NAME FROM ora_rt WHERE ID = 1; SET SWV_ROW2_ID = SWV_ROW1_ID; 
SET SWV_ROW2_NAME = SWV_ROW1_NAME; END;/
Oracle %TYPE をMicrosoft SQL Serverへ変換 
Oracle の%TYPE 属性はテーブルの定義変更にコードを対応させることができます。%TYPE 属性は変数やデータベースカラムのデータ型を提供します。カラムのデータ型が変更された場合でも、変数は実行時に正しい型を使用します。これによりデータの独立性と保守コストの削減が実現できます。 
Microsoft SQL Server には Oracle の%TYPE と同等の機能はありません。 
SQLWays は Oracle の%TYPE 属性付きで定義された変数を、Microsoft SQL Server ではテーブルのカラムまたは変数と同じデータ型を持つ変数宣言に変換します。 
変換の例： 
TABLE 25. table_name.column_name%TYPEの使用 
Oracle Microsoft SQL Server 
CREATE PROCEDURE ORA_SP_TYPE IS v_name ora.ora_rt.Name%TYPE; BEGIN 
SELECT Name 
INTO v_name FROM ora_rt WHERE ID = 1; 
CREATE PROCEDURE ORA.ORA_SP_TYPE AS BEGIN 
DECLARE @v_name VARCHAR(10) select @v_name = Name FROM ora_rt WHERE ID = 1 
Remarks:テーブル ora_rt には次のカラムが存在します： VARCHAR2(10) のName 
TABLE 26. variable%TYPEの使用 
Oracle Microsoft SQL Server 
CREATE procedure ora_sp_type1 
v_name1 varchar(10); v_name v_name1%TYPE; BEGIN 
SELECT Name INTO v_name FROM ora_rt WHERE ID = 1; 
CREATE procedure ORA.ORA_SP_TYPE1 
AS BEGIN 
DECLARE @v_name1 VARCHAR(10) DECLARE @v_name VARCHAR(10) select @v_name = Name FROM ora_rt WHERE ID = 1 
63 SQLWays Documentation Copyright © 1999-2015 
複合データ型のローカル変数の宣言
この章では複合データ型（スカラデータ型なし）のローカル変数の宣言について記述します。スカラデータ型とは内部の構成要素を持たないデータ型であり、 数値データ型 (NUMBER, DECIMAL, FLOAT,...)、文字データ型 (CHAR, VARCHAR2, RAW,...)、日付時刻データ型 (DATE, TIMESTAMP,...) 、および論理データ型です。複合データ型とは内部構成要素を持つデータ型であり、RECORD、 TABLE 、および VARRAY です。  
複合データ型の変数の定義を行う前に、そのデータ型を定義する必要があります。
TABLE 27. 複合データ型のローカル変数宣言の例 
Databaseステートメント説明
Oracle TYPE type_name IS RECORD ( { field_name field_type [ [NOT NULL] := | DEFAULT expression 
] [,] } );
この構文では Oracle の RECORD 型を使用しています。Record はフィールドに格納されるそれぞれれ名前とデータ型をを持つデータ項目のグループです。フィールドの宣言はローカル変数の宣言と似ています。RECORD 型にはオブジェクト、コレクション、および他のレコードを含めることができます。
type_name – RECORD 型の名前  field_name – レコードのフィールド名 field_type – レコードのフィールド型 
例：次のサンプルではフィールド a (number) および b (varchar2(10))を持つRECORD R1 を定義しています。 
TYPE R1 IS RECORD ( a NUMBER, b VARCHAR2(10) );
var_name type_name; もし type が RECORD データ型であれば、Oracle の宣言済みレコード変数です。 
Microsoft SQL Server 非サポート
Oracle RECORD 変数を Microsoft SQL Serverへ変換 
Microsoft SQL Server はレコードをデータ型としてサポートしていないため、SQLWays はこの機能を個別の変数の組を使用することでエミュレートします。レコード変数を完全に代替するために、SQLWaysはレコードデータ型の定義とレコードの変数宣言を変更し、レコード変数とレコード変数の内部要素を使用します。 
まず最初に SQLWays はレコードデータ型の変数宣言を対応するデータ型の個別の宣言に変更します。宣言される変数の数とデータ型は元のレコード変数の内部要素と同じです。 
次に SQLWays はレコードデータ型の定義を削除します。 
その後、SQLWays はレコード変数の使用状況を調べ、以下の様に変更します：  
•   内部要素を参照していないレコード変数に対して、SQLWaysはそのレコード変数用に生成した変数のリストに変換します 
•   • 内部要素を参照しているレコード変数に対して、SQLWaysは生成した対応する変数に変換します 
TABLE 28. Oracle RECORD 変数を Microsoft SQL Serverへ変換 
Oracle Microsoft SQL Server 
CREATE OR REPLACE PROCEDURE ora_sp_record_type as begin 
DECLARE 
TYPE RecType IS RECORD( 
a number, 
b varchar2(15)); RecVar RecType; 
a number; b varchar2(15); CURSOR cursoitem IS SELECT a, b FROM tab1; BEGIN 
OPEN cursoitem; LOOP FETCH cursoitem INTO RecVar; EXIT WHEN cursoitem%NOTFOUND; BEGIN 
SELECT a, b INTO a,b FROM tabl WHERE c = RecVar.a; 
END LOOP; CLOSE cursoitem; COMMIT; 
CREATE PROCEDURE ORA_SP_RECORD_TYPE AS begin 
DECLARE @a FLOAT DECLARE @b VARCHAR(15) DECLARE cursoitem CURSOR FOR SELECT @a, @b FROM tab1 DECLARE @SWV_RecVar_a FLOAT DECLARE @SWV_RecVar_b VARCHAR(15) OPEN cursoitem while 1 = 1 begin 
FETCH cursoitem INTO @SWV_RecVar_a, 
@SWV_RecVar_b 
if @@FETCH_STATUS <> 0 break BEGIN 
select @a = a, @b = b FROM tabl WHERE a = 
@SWV_RecVar_a  
end CLOSE cursoitem DEALLOCATE cursoitem COMMIT 
65 SQLWays Documentation Copyright © 1999-2015 
代入ステートメント 
代入ステートメントは変数に値を代入するのに使われます。データベースにより異なる代入ステートメントがサポートされています。
TABLE 29. 様々な代入ステートメント 
Databases構文説明
Microsoft SQL Server
SELECT @local_variable = expression { 
,@local_variable = expression } SET  @local_variable = expression
先に DECLARE @local_variable ステートメントで宣言されたローカル変数に値を代入します。式はスカラー・サブクエリを含む任意の有効な式を指定できます。
Oracle local_variable := expression 代入演算子は変数に値を代入するのに使われます。
式は任意の有効な式が指定可能。代入演算子にサブクエリを指定することはできません。
       
代入ステートメントを Microsoft SQL Server から Oracleに変更 
SQL Server のSELECT | SET @local_variable 代入ステートメントでは、変数への値設定にサブクエリを指定する事ができます。しかし Oracle の代入演算子 (:=) ではサブクエリを指定することはできません。 
a) 式はスカラサブクエリ以外の任意の式 
この場合、SQLWays は SELECT および SET 句を Oracle の代入演算子 (:=) に変換します。 
TABLE 30. 式 は ス カ ラ サ ブ ク エ リ 以 外 の 任 意 の 式  
Microsoft SQL Server Oracle 
SELECT @A=5+7 v_A:=5+7; 
SET @B=’String’ v_B:=’String’; 
b) 式はスカラサブクエリ 
もしSQL Server の式がスカラサブクエリである場合、SQLWays は SELECT および SET 句を SQLクエリの結果を変数に代入できる Oracle のSELECT INTO ステートメントに変換します。  
TABLE 31. 式はスカラサブクエリ 
Microsoft SQL Server Oracle 
SELECT @D = (SELECT col1 FROM tab1) SELECT col1 INTO v_D FROM tab1; 
SELECT @C = (SELECT col2 FROM tab2) SELECT col2 INTO v_C FROM tab2; 
c) 複数の代入句を含むSELECT | SET ステートメント 
SQL Server のSELECT @local_variable 代入ステートメントには複数の代入を行う事ができますが、 Oracle では一つしか行うことはできません。もしSQL Server のSELECT に複数の代入が含まれる場合、SQLWays はそれらを Oracle の複数の代入演算に変換します。 
TABLE 32. 複 数 の 代 入 句 を 含 む S E L E C T  |  S E T   
Microsoft SQL Server Oracle 
SELECT @E = (SELECT col3 FROM tab3), @G = 9.8 
SELECT col3 INTO v_E FROM tab3; v_G:=9.8; 
SELECT @F= (SELECT col4 FROM tab4), @H= (SELECT col5 FROM tab5) 
SELECT col4 INTO v_F FROM tab4; SELECT col5 INTO v_H FROM tab5; 
SELECT @K = ‘Test string’, @L = 10 
v_K:= ‘Test string’; v_L:=10; 
67 SQLWays Documentation Copyright © 1999-2015 
このサブセクションでは様々なデータベースでの、式と検索値をひとつづつ比較して結果を返す関数とそのSQLWaysによる変換について記述します。
TABLE 33. 条件式 
データベース構文説明
Oracle DECODE (comp_exp, search_exp1, result_exp1 [, search_expN, result_expN]… [, default_exp])
式 (comp_exp)を検索値 (search_exp1, ..., search_expN)とひとつづつ比較し、式 (comp_exp)が検索値と等しい場合には対応する結果 (result_exp1, ..., result_expN)を返します。一致しない場合にはデフォルト (default_exp)を返します。またデフォルトが省略されている場合にはNULLを返します。 
comp_exp, search_exp および result_exp のデータタイプは CHAR、VARCHAR2、NCHAR、NVARCHAR2 のデータタイプです。戻される文字列は、VARCHAR2 データ型で、最初のresult パラメータと同じキャラクタ・セットの文字列です。
 search_exp, result_exp および default_exp の値は式から導出されます。
DECODE関数 は比較を行う前に comp_exp と各検索値 (search_exp) を最初のsearch 値のデータ型に自動的に変換します。また、戻り値を最初のresult (result_exp) と同じデータ型に自動的に変換します。最初のresult のデータ型がCHAR の場合、または最初のresult がNULL の場合、Oracle は戻り値をVARCHAR データ型の値に変換します。
DECODE関数は、2 つのNULL を同等とみなします。comp_exp がNULL の場合、DECODE は最初の検索値のresult もNULL として返します。
DECODE関数のコンポーネントの最大数は、comp_exp、検索値 (search_exp1, ..., search_expN)、結果 (result_exp1, ..., result_expN)、デフォルト (default_exp) を含め255 です。
DECODE (emp_type, 1, ‘clerk’, 2, ‘book-keeper’, ‘Unknown’) 
TABLE 33. 条件式 
データベース構文説明
CASE comp_exp WHEN search_exp1 THEN result_exp1 [WHEN search_expN THEN result_expN]… [ELSE default_exp] END
式(comp_exp)と各検索値(search_exp1, ..., search_expN)をひとつづつ比較し、式(comp_exp)が検索値と一致する場合には対応する結果(result_exp1, ..., result_expN) を返します。一致しない場合にはデフォルト値(default_exp)を返します。デフォルト値が省略されている場合はNULLを返します。 
全ての式 (comp_exp、search_exp および result_exp) のデータ型は CHAR、VARCHAR2、NCHAR、NVARCHAR2 のいずれかです。
Example: 
CASE emp_type WHEN 1 THEN ‘clerk’ WHEN 2 THEN ‘book-keeper’ ELSE ‘Unknown’ END
CASE WHEN condition_exp1 THEN result_exp1 [WHEN condition_expN THEN result_expN]… [ELSE default_exp] END
条件(condition_exp)を左から右に順に検索し、条件が真である場合にresult_exp を 返 し ま す 。 条 件 を 満 た さ な い 場 合 に は デ フ ォ ル ト (default_exp)を返します。デフォルトが省略されている場合には NULL を返します。 例：
CASE WHEN salary>500 THEN salary WHEN salary<200 THEN 200 ELSE 500 END
MySQL CASE comp_exp WHEN search_exp1 THEN result_exp1 [WHEN search_expN THEN result_expN]… [ELSE default_exp] END
式 (comp_exp) を各検索値 (search_exp1, ..., search_expN) とひとつづつ比較し、式 (comp_exp) が検索値と一致する場合には対応する結果 (result_exp1, ..., result_expN) を返します。一致しない場合にはデフォルト (default_exp) を返します。デフォルトが省略されている場合には NULL を返します。 
返却値のデータ型は最初に返される値 (最初のTHEN の後の式) と同じです。
69 SQLWays Documentation Copyright © 1999-2015 
TABLE 33. 条件式 
DatabaseSyntaxDescription
CASE workgroup WHEN A THEN ‘Administration’ WHEN B THEN ‘Book-keeping’ WHEN C THEN ‘Customer department’ ELSE ‘Others’ END
CASE WHEN condition_exp1 THEN result_exp1 [WHEN condition_expN THEN result_expN]… [ELSE default_exp] END
左から右に検索し条件 (condition_exp) が真の場合にresult_expを返します。もし条件を満たさない場合にはデフォルト (default_exp) を返します。デフォルトが省略されている場合にはNULLを返します。 
返却値のデータ型は最初に返される値 (最初のTHEN の後の式) と同じです。
CASE WHEN salary between 200 and 500 THEN 500 WHEN salary<200 THEN 200 ELSE salary END
Microsoft SQL Server
CASE comp_exp WHEN search_exp1 THEN result_exp1 [WHEN search_expN THEN result_expN]… [ELSE default_exp] END
式 (comp_exp) をそれぞれの検索値 (search_exp1, ..., search_expN) とひとつづつ比較し、もし式 (comp_exp) が検索値と等しい場合には対応する結果 (result_exp1, ..., result_expN) を返します。もし一致しない場合にはデフォルト (default_exp)を返します。デフォルトが省略されている場合には NULL を返します。 
返却値のデータ型： 結果result_exp の中で最も優先度の高いデータ型または オプションのdefault_exp
CASE level WHEN 1 THEN ‘First level’ WHEN 2 THEN ‘Second level’ WHEN 3 THEN ‘Third level’ ELSE ‘Top level’ END
      
TABLE 33. 条件式 
データベース 構文 説明 
 CASE WHEN condition_exp1 THEN result_exp1 [WHEN condition_expN THEN result_expN]… [ELSE default_exp] END 
左から右に検索し条件 (condition_exp) が真の場合に対応する結果 result_expを返します。もし条件を満たさない場合、デフォルト (default_exp) を返します。デフォルトが省略されている場合には NULL を返します。  返却値のデータ型： 結果result_exp の中で最も優先度の高いデータ型または オプションのdefault_exp 
CASE WHEN price IS NULL THEN 'Not yet priced' WHEN price < 10 THEN 'Very Reasonable Title' WHEN price >= 10 and price < 20 THEN 'Coffee Table Title' ELSE 'Expensive book!' END 
IBM DB2 CASE comp_exp WHEN search_exp1 THEN {result_exp1 | NULL} [WHEN search_expN THEN {result_expN | NULL}]… [ELSE default_exp] END 
式 (comp_exp) を検索値 (search_exp1, ..., search_expN) とひとつづつ比較し、式 (comp_exp) が検索値と一致する場合には対応する結果 (result_exp1, ..., result_expN) を返します。一致しない場合、デフォルト (default_exp) を返します。デフォルトが省略されている場合には NULL を返します。 
CASE credit_limit WHEN 100 THEN ’Low’ WHEN 5000 THEN ’High’ ELSE ’Medium’ END 
CASE WHEN condition_exp1 THEN {result_exp1 | NULL} [WHEN condition_expN THEN {result_expN | NULL}]… [ELSE default_exp] END 
左から右に検索し条件 (condition_exp) が真の場合、対応する結果 result_exp を 返 し ま す 。 条 件 を 満 た さ な い 場 合 、 デ フ ォ ル ト (default_exp) を返します。デフォルトが省略されている場合 NULL を返します。 例： 
CASE WHEN1>0 THEN 'true' ELSE ‘false’ END 
71 SQLWays Documentation Copyright © 1999-2015 
Oracle DECODE を MySQL CASEへ変換 
Oracle のDECODE 関数は、指定された式と各検索値を一つずつ比較し対応する結果を返すために使用されます。 
MySQL にも DECODE 関数がありますが、それは暗号化された文字列を指定されたパスワードで複合するために使用されます。MySQL のCASE 式が Oracle のDECODE 関数と機能的に等価なものになります。 
SQLWays は Oracle のDECODE 関数を MySQL のCASE 式に変換します。 
TABLE 34. Oracle DECODE を MySQL CASEへ変換 
OracleMySQL
create procedure ora_sp_decode2 (job_level out varchar2) as begin select DECODE(job_lvl,1,'level 1',2,'level 2','Unknown level') into job_level from employee where job_id>0; end;
create procedure ora_sp_decode2 (out job_level TEXT ) begin select CASE job_lvl WHEN 1 THEN 'level 1 WHEN 2 THEN 'level 2' ELSE 'Unknown level' end into job_level from employee where job_id>0  ; end ;
       
SELECT ステートメント 
このセクションでは 様々なデータベースのSQL SELECT ステートメント構文とSQLWaysによるその変換について記述します。  
•   結果セット内のローの数の制限 
73 SQLWays Documentation Copyright © 1999-2015 
結果セット内のローの数の制限 
このサブセクションでは様々なデータベースでの結果セットのローの数を制限する方法とSQLWaysによる変換について記述します。 
TABLE 35. 結果セット内のローの数の制限 
データベース句説明
Microsoft SQL Server
TOP n [ PERCENT ] SELECT ステートメントのTOP 句は結果セットで返されるローの数を制限します。PERCENT が指定されない場合、n は返されるローの数です  PERCENT が指定された場合、n は返されるローの割合です。この場合、n は 0 から 100 の整数値です  もし TOP句を含むSELECT ステートメントに ORDER BY 句がある場合、返されるローは並べ替え後の結果セットから取得されます。例： 以下の例はクエリから最初の７つのローのみを取得します：SELECT TOP 7 col1 FROM tab1
Oracle ROWNUM ROWNUM 疑似カラムは１から始まる結果セットのローの順番を示す番号を返します。ROWNUM により結果セットのローの数を制限することができます。 もし SELECT ステートメントが ORDER BY 句を含む場合、ROWNUMの値 はソートされる前に割り当てられます。
例： 以下の例ではクエリの最初の７つのローのみを取得します：SELECT col1 FROM tab1 WHERE ROWNUM<=7;
Microsoft SQL Server TOP 句を Oracleへ変換 
Microsoft SQL Server のTOP 句は SELECT ステートメントで返されるローの数を制限します。 TOP では返されるローの数またはパーセンテージを指定する事ができます。もしTOP句を含む SELECT ステートメントに ORDER BY 句がある場合、返されるローは並べ替え済みの結果セットから選択されます。 
Oracle のROWNUM 疑似カラムは結果セットから選択されたローの順番を返します。ROWNUM は Oracle でのローの制限に使用することができますが、ROWNUM は並べ替えが行われる前に割り当てられます。  SQLWays は Microsoft SQL Server のTOP 句を Oracle へ以下のように変換します：  
a)TOP 指定の SELECT ステートメントが ORDER BY 句を含まない場合 
Microsoft SQL Server で ORDER BY 句が含まれない場合、SQLWays は Oracle の SELECT ステートメントのWHERE句に ROWNUM 疑似カラムを指定することでTOP 句を実装します。   もし TOP に PERCENT 句が指定された場合、SQLWays は、クエリで返されるローの合計数から指定されたパーセンテージに対応するローの数を計算します。 
TABLE 36. TOP 指定の SELECT ステートメントが ORDER BY 句を含まない場合 
Microsoft SQL Server Oracle 
create procedure sql_sp_select_top as DECLARE @a number select top 1 @a=col1 from tab1 
CREATE OR REPLACE PROCEDURE sql_sp_select_top AS v_a VARCHAR2(255); BEGIN select col1 INTO v_a from tab1 WHERE ROWNUM <=1; END; 
create procedure sql_sp_select_top2 as DECLARE @a number select top 1 @a=col1 from tab1 WHERE 
col2>0 
CREATE OR REPLACE PROCEDURE sql_sp_select_top2 AS v_a VARCHAR2(255); BEGIN select col1 INTO v_a from tab1 WHERE col2>0 and ROWNUM <=1; END; 
create procedure sql_sp_select_top3 as DECLARE @a number select top 30 percent @a=col1 from tab1 
CREATE OR REPLACE PROCEDURE sql_sp_select_top3 AS v_a VARCHAR2(255); BEGIN select col1 INTO v_a from tab1 WHERE ROWNUM <= 30 *(SELECT COUNT(*) from tab1) / 100; END; 
b) TOP 指定のSELECT ステートメントが ORDER BY 句を含む場合  
Microsoft SQL Server とは異なり、Oracle では結果セットの並べ替え前に ROWNUM への割り当てを行います。もし Microsoft SQL Server のSELECT ステートメントが ORDER BY 句を含む場合、SQLWays は元のクエリをサブクエリ付きのクエリに変換します。サブクエリで並べ替えを行い、親クエリで ROWNUM によるローの制限をおこないます。
75 SQLWays Documentation Copyright © 1999-2015 
TABLE 37. TOP 指定のSELECT ステートメントが ORDER BY 句を含む場合 
Microsoft SQL ServerOracle
create procedure sql_sp_select_top4 as DECLARE @a number select top 1 @a=col1 from tab1 order by col1
create or replace procedure sql_sp_select_top4 as a number; begin select * into a from (select col1 from tab1 order by col1) where rownum<=1; end;
create procedure sql_sp_select_top5 as DECLARE @a number select top 15 percent @a=col1 from tab1 
order by col1
create or replace procedure sql_sp_select_top5 as a number; begin select * into a from (select col1 from tab1 order by col1) where rownum<=15*(select count(*) from tab1 order by col1)/100; end;
       
プロシージャやユーザ定義関数の実行 
このセクションは様々なデータベースのプロシージャやユーザ定義関数を他のプロシージャやファンクションから実行する方法、およびSQLWaysによるその変換について記述します。  
77 SQLWays Documentation Copyright © 1999-2015 
TABLE 38. プロシージャやユーザ定義関数の実行 
DatabaseSyntaxDescription
Microsoft SQL Server
EXEC [UTE] [ @return_status = ] procedure_name [ [@par1=] {value | @variable [OUTPUT] | [DEFAULT] [,[@parN=] {value | @variable [OUTPUT] | [DEFAULT]]… ]
EXECUTE ステートメントはMicrosoft SQL Server でプロシージャやユーザ定義関数を実行するのに使用されます。
@return_status はファンクション（プロシージャ）が返す値 procedure_name  はプロシージャ（ファンクション）の名前 @parN はプロシージャ（ファンクション）のパラメータ 
例：下の例ではプロシージャ proc2 を呼び出しています： 
EXEC proc2 
以下の例では ファンクション f1 を 1 および @var1 をパラメータとしてCallし、@ret_val 変数に値を返します：EXECUTE @ret_value = f1 1, @var1
      
TABLE 38. プロシージャやユーザ定義関数の実行 
Database Syntax Description 
Oracle [ return_status = ] procedure_name ([{ value | variable }]) 
Oracleのプロシージャやファンクションを実行するには、PL/SQLにてプロシージャ（ファンクション）の名前とパラメータを明示的に指定しなければなりません。  
例： 以下の例では、proc2 ストアドプロシージャがパラメータ 77 および `test' でCallされています： proc2 (77,’test’);  
下の例では、ファンクション func2 は ret_func2 変数に値を返します。ファンクションはパラメータをひとつ (0) 使用しています： ret_func2:=func2(0) ; 
Sybase Adaptive Server Anywhere 
[@variable =] CALL procedure_name ([ [@par1=] exp1 [,[@parN=] expN]… ]) 
CALL は作成済みのプロシージャを呼び出します。  
引数リストは位置またはキーワード形式で指定する事ができます： •位置指定の場合、引数はプロシージャのパラメータリストと合致します •キーワード指定の場合、引数は名前付きパラメータ (par1, ..., parN) と合致します  
結果セットを返すプロシージャでは、DECLAREステートメントでCALLステートメントを使うことができます。（例：DECLARE CURSOR ステートメントの中）  
プロシージャはRETURNステートメントを使用して整数値 (ステータス情報) を返すことができます。 
EXEC[UTE] [@return_status =] [creator.]procedure_name [ [@par1=] {exp1 | @variable1 [OUTPUT]} [,[@parN=] {expN | @variableN [OUTPUT]}]… ] 
EXECUTEはプロシージャを呼び出します。パラメータの指定や出力値や結果ステータス情報を取得することもできます。  
EXECUTEはSybase Adaptive Server Enterprise互換の CALL ステートメントの代替機能です 。 
@return_status はステータス情報が返される変数 
@parN はプロシージャパラメータの名前  
例： 下の例はプロシージャ p2 を実行しています： EXECUTE p2  
以下の例はプロシージャを実行し返却値を@ret_val 変数に格納しています： EXECUTE @ret_value = p1 1 
79 SQLWays Documentation Copyright © 1999-2015 
プロシージャやユーザ定義関数の実行をMicrosoft SQL Server から Oracleへ変換 
Microsoft SQL Server のEXEC ステートメントはユーザ定義の関数やストアドプロシージャの実行に使われます。Oracle でユーザ定義関数やストアドプロシージャを実行するには、プロシージャ本体に名前とパラメータを指定する必要があります。
SQLWays は Microsoft SQL Server のEXEC ステートメントを Oracle のストアドプロシージャや関数を呼び出す構文に変換します。
TABLE 39. プロシージャやユーザ定義関数の実行を Microsoft SQL Server から Oracleへ変換 
Microsoft SQL ServerOracle
create procedure sql_sp_exec as DECLARE @a varchar(20) EXEC @a=func1 1
create or replace procedure sql_sp_exec as v_a varchar2(20); begin v_a:=func1(1); end;
create procedure sql_sp_exec2 as DECLARE @a varchar(20) EXECUTE proc1 @par1=@a,3
create or replace procedure sql_sp_exec2 as v_a varchar2(20); begin proc1 (v_a,3); end;
create procedure sql_sp_exec3 as EXECUTE proc3
create or replace procedure sql_sp_exec3 as begin proc3(); end;
       
Sybase Adaptive Server Anyware CALLを Microsoft SQL Serverへ変換 
Sybase Adaptive Server Anyware のCALL ステートメントは作成済みのプロシージャを呼び出すのに使用されます。Sybase Adaptive Server Anyware のCALL は引数のリストに式を指定する事ができます。   Microsoft SQL Server ではEXECUTE ステートメントはプロシージャを呼び出すのに使用されます。Microsoft SQL Server のEXECUTE は引数のリストに定数または変数 (式は不可) のみを指定する事ができます。 
SQLWays は Sybase ASA のCALL を Microsoft SQL Server のEXECUTE ステートメントに変換します。CALL に指定された各式について、SQLWays はローカル変数を作成してその変数に式を割り当て、EXECUTE ステートメントにその変数を指定します。 
TABLE 40. 変換の例 
Sybase Adaptive Server Anyware Microsoft SQL Server 
create procedure asa_sp_call (@a int) begin call sp_func('MTN' + ':' + 'FTN',@a+3); end; 
create procedure asa_sp_call @a INT 
AS begin DECLARE @par01 CHAR(10) DECLARE @par02 INT set @par01 = 'MTN' + ':' + 'FTN' set @par02 = @a + 3 EXECUTE sp_func @par01, @par02 end 
81 SQLWays Documentation Copyright © 1999-2015 
パラメータ付き動的 SQL ステートメントの実行 
このセクションでは様々なデータベースのパラメータ付き動的SQLステートメントの実行とSQLWaysによる変換について記述します。
      
TABLE 41. パラメータ付き動的SQLステートメントの実行  
Database Syntax Description 
Microsoft SQL Server 
EXEC [UTE] sp_executesql N'dynamic_compound_string ' | @dynamic_statement [ N'param_defined_string' | dynamic_param_definition [@param1=]value1 [,[@paramN=]valueN]… ] 
sp_executesql付きのEXECUTEステートメントは動的な複合ステートメントを含むSQLステートメントを実行します。動的複合ステートメントには埋め込みパラメータを設定することができます  
パラメータ：  
N'dynamic_compound_string' | @dynamic_statement – 文字列または変数として定義される実行可能なSQLステートメント   
N'param_defined_string' | dynamic_param_definition - 実行可能なSQLステートメント用の入力パラメータである文字列または変数  
それぞれのパラメータはパラメータの名前とデータ型で定義されます。パラメータのデフォルト値はNULLです。  
[@param1=] value1はパラメータの値であり、定数または変数が設定できます。動的ステートメントに含まれる全てのパラメータには値の設定が必須です。  
例： 以下のステートメントはパラメータ付き動的SELECTステートメントに入力パラメータを与えて実行しています： 
execute sp_executesql N'select * from tab1 where col1 = @param', N'@param int', @param = 35 
83 SQLWays Documentation Copyright © 1999-2015 
TABLE 41. パラメータ付き動的SQLステートメントの実行 
DatabaseSyntaxDescription
Oracle EXECUTE IMMEDIATE dynamic_string 
[ INTO { ret_value1 [, 
retvalueN]… | record_name} ] 
[ USING [ {IN | OUT | IN OUT} ] value1, [,valueN]…];
EXECUTE IMMEDIATEステートメントはOracleで動的SQLステートメントを実行するのに使われます。
パラメータ：dynamic_string - 文字列、変数、または式として定義された実行可能SQLステートメント。入力パラメータは ：N と表記されます。NはUSING句内のパラメータの番号を示します  
ret_valueN, record_name – INTO句はカラムの値が格納される変数またはレコードを示します。INTO句は単一ロークエリでのみ使用されます
[ IN | OUT | IN OUT ] valueN – USING句はパラメータの入／出力値のリストを示します。デフォルトでは valueN はINパラメータです 
例：下の例ではパラメータ付きの動的複合INSERTステートメントを実行しています：
sql_dString := 'INSERT INTO tab1 VALUES (:1, :2, :3)'; EXECUTE IMMEDIATE sql_dString USING 77, 21, variable1;
       
動的ステートメントの実行を Microsoft SQL Server から Oracleへ変換 
EXECUTE sp_executesql ステートメントは、Microsoft SQL Server でパラメータ付きの動的SQLステートメントを実行するのに使われます。EXECUTE sp_executesql の２番目の文字列パラメータでは動的SQLステートメントのパラメータとそのデータ型を記述します。  
EXECUTE IMMEDIATE ステートメントは、Oracle でパラメータ付きの動的SQLステートメントを実行するのに使われます。入力パラメータは :N のように記述されます。 N は USING 句の中のパラメータの順番です。  
SQLWays は Microsoft SQL Server のEXECUTE sp_executesql ステートメントを Oracle のEXECUTE IMMEDIATE に変換します。 SQLWays は MSQL 動的ステートメントの入力パラメータを Oracle の構文に変換します。SQLWays は Microsoft SQL Server の動的文字列のパラメータ名を Oracle でのパラメータ番号に変換します。 
TABLE 42. 動的ステートメントの実行を Microsoft SQL Server から Oracleへ変換 
Microsoft SQL Server Oracle 
create procedure sql_sp_executesql as declare @param int execute sp_executesql N'select * from tab1 where col1 = @param', N'@param int', @param = 35 
CREATE OR REPLACE PROCEDURE sql_sp_executesql AS v_param NUMBER(10,0); BEGIN EXECUTE IMMEDIATE 'select * from tab1 where col1 = :1' USING 35; end; 
create procedure sql_sp_executesql2 as declare @InsOrderID int declare @InsertString varchar(50) SET @InsertString = N'INSERT INTO tab1' + ' VALUES (@InsOrderID)' EXEC sp_executesql @InsertString, N'@InsOrderID INT',  @InsOrderID 
CREATE OR REPLACE PROCEDURE sql_sp_executesql2 AS v_InsOrderID NUMBER(10,0); v_InsertString VARCHAR2(50); BEGIN v_InsertString := 'INSERT INTO tab1' || ' VALUES (:1)'; EXECUTE IMMEDIATE v_InsertString USING v_InsOrderID; END; 
create procedure sql_sp_executesql3 as declare @val int declare @InsertString varchar(50) SET @InsertString = N'DELETE FROM tab1 WHERE col1 = @par1 and col2=@par2' EXEC sp_executesql @InsertString, N'@par1 INT, @par2 INT',  @par1=1, @par2=@val 
CREATE OR REPLACE PROCEDURE sql_sp_executesql3 AS v_val NUMBER(10,0); v_InsertString VARCHAR2(50); BEGIN v_InsertString := 'DELETE FROM tab1 WHERE col1 = :1 and col2=:2' ; EXECUTE IMMEDIATE v_InsertString USING 1,v_val; end; 
85 SQLWays Documentation Copyright © 1999-2015 
クエリにより返される一連のローは結果セットと呼ばれます。結果セットには検索条件に合致するローの数により、０、１、またはそれ以上のローが含まれます。
一つ以上のローを取得するクエリを実行する場合、それらを扱うためのカーソルを定義しなければなりません。カーソルは複数ローを返すクエリの結果セットの中で現在のローの位置を指します。
OPEN、FETCH、およびCLOSEコマンドによりカーソルを制御することができます。まず最初にOPENステートメントで結果セットを指すカーソルを初期化します。次に、全てのローを取得するまでFETCHを繰り返し実行します。最後のローを取得した後、CLOSEステートメントによりカーソルを解放します。複数のカーソルを定義、OPENすることで幾つかのクエリを並行して実行する事ができます。 
•カーソル宣言
•パラメータ付きカーソルのOracle から MySQLへの変換
       
カーソル宣言 
このサブセクションでは様々なデータベースでのカーソル宣言ステートメントおよびSQLWaysによるその変換について説明します。カーソルは他のステートメントで参照される前に宣言されなければなりません。宣言するカーソルは特定のクエリに関連付ける必要があります。  
TABLE 43. 様々なデータベースでのカーソル宣言ステートメント 
Database Statement Description 
Microsoft SQL Server 
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] FOR select_statement [ FOR UPDATE [OF column1 [{ , columnN...} ]]] 
カーソルを宣言し、スクロール動作等の属性や結果セットを構築するクエリを定義します。  FORWARD_ONLYはカーソルは先頭から末尾のローへのみ移動する事ができる事を示します。この場合、FETCHオプションはNEXTのみサポートされます。 SCROLLの場合は各種FETCHオプション（FIRST、LAST、PRIOR、NEXT、RELATIVE、ABSOLUTE）が利用可能です 
select_statement はカーソルの結果セットを定義するSELECTステートメントです。 
Oracle CURSOR cursor_name [( cur_param1 [IN] data_type [ {:= | DEFAULT} exp] [, cur_paramN [IN] data_type [ {:= | DEFAULT} exp]… )] IS select_statement; 
カーソルを宣言し特定のクエリを関連づけます。  cur_paramN はクエリの中で定数が記述可能な場所に置く事ができる仮のカーソルパラメータです。カーソルの仮パラメータはINパラメータでなければならなりません。クエリはスコープ内の他のPL/SQL変数を参照する事ができます 。 Select_statement は結果セットを返すクエリです。もしカーソル宣言でパラメータを宣言した場合、それらはクエリの中で使用されなければなりません。 
MySQL DECLARE cursor_name CURSOR FOR select_statement 
カーソルを宣言し特定のクエリを関連づけます。 select_statement はカーソルの結果セットを定義するSELECTステートメントです。 
87 SQLWays Documentation Copyright © 1999-2015 
カーソル宣言を Microsoft SQL Server から Oracleへ変換 
a) FORWARD_ONLY カーソルの変換
Microsoft SQL Server の FORWARD_ONLY オプションは、先頭から末尾のローへの前方のスクロールのみが可能である事を指定します。このスクロールはOracleのデフォルトであるためSQLWaysはこのオプションを削除します。 
TABLE 44. 様々なデータベースでのカーソル宣言ステートメント 
Microsoft SQL ServerOracle
DECLARE cur1 CURSOR FORWARD_ONLY FOR SELECT col1 FROM tab1
CURSOR cur1 IS SELECT col1 FROM tab1;
b) SCROLL カーソルの変換
Microsoft SQL Server での SCROLL オプションはローのスクロールが様々な方向 (FIRST, LAST, PRIOR, NEXT, RELATIVE, ABSOLUTE) に行う事ができることを指定します。Oracle がサポートするのは前方 (NEXT) のみです。 
SQLWays は Oracle へ変換する場合にSCROLL オプションを削除します。もしアプリケーションがFETCH NEXTのみを使用する場合は問題ありませんが、そうでない場合はアプリケーションを修正する必要があります。
TABLE 45. SCROLL カーソルの変換 
Microsoft SQL ServerOracle
DECLARE cur1 CURSOR SCROLL FOR SELECT col1 FROM tab1
CURSOR cur1 IS SELECT col1 FROM tab1;
パラメータ付きカーソルのOracle から MySQLへの変換 
Oracleではカーソルにパラメータを使用できます。パラメータはクエリの中で定数が記述可能な場所に指定する事が出来ます。パラメータにより、ひとつのカーソルを異なるクエリの入力パラメータで使うことができます。 
  MYSQLはカーソルへのパラメータはサポートしていません。 
Oracleのパラメータ付きカーソルをMySQL向けに変換する場合、SQLWaysはカーソルパラメータの代わりにローカル変数を宣言して使用します。カーソルのOPEN前にSQLWaysはカーソルパラメータの値をこれらのローカル変数に代入します。 
TABLE 46. パラメータ付きカーソルのOracleからMySQLへの変換 
Oracle MySQL 
create procedure ora_sp_cur_with_param_mysql a var1 number := 0; CURSOR cur1 (val1 number) IS SELECT col1 FROM tab1 WHERE col5 = val1; BEGIN open cur1 (0); fetch cur1 into var1; close cur1; open cur1 (5); fetch cur1 into var1; close cur1; END; 
Create procedure ora_sp_cur_with_param_mysql() BEGIN DECLARE var1 FLOAT DEFAULT 0; DECLARE val1 FLOAT; DECLARE cur1 CURSOR FOR SELECT col1 FROM tab1 WHERE col5 = val1; SET val1 = 0; open cur1; fetch cur1 into var1; close cur1; SET val1 = 5; open cur1; fetch cur1 into var1; close cur1; end; 
89 SQLWays Documentation Copyright © 1999-2015 
トランザクション制御 
このセクションはSQLWaysがデータをあるデータベースから別のデータベースにエクスポートする際のトランザクションの変換に関する情報が記述されています。
•トランザクションの開始
•BEGIN TRANSACTION のMicrosoft SQL Server から Oracleへの変換
•COMMIT ステートメント
•COMMIT の Microsoft SQL Server から Oracleへの変換
トランザクションの開始 
幾つかのデータベースは特別なステートメントにより明示的なユーザ定義トランザクションを生成する事ができます。そのようなステートメントが定義されると新たなユーザ定義トランザクションが開始されます。  
TABLE 47. トランザクションの開始 
データベース 構文 説明 
Microsoft SQL Server 
BEGIN [ TRAN [ SACTION ] [ transaction_name | @tran_name_variable ] [ WITH MARK [ 'description' ] ] ] 
BEGIN TRANSACTION ステートメントが発行されることにより当該コネクションに明示的なまたはネストされたローカルトランザクションが開始されます。各トランザクションは、エラー無く終了、またはCOMMIT TRANSACTIONによるトランザクションの完了、もしくはエラー発生時にROLLBACK TRANSACTIONステートメントにより全ての更新が取り消しが行われるまで継続します。 BEGIN TRANSACTION は @@TRANCOUNT 変数をひとつ増加させます。WITH MARKオプションはトランザクションログ内の位置に名前を付けるのに使われます。データベースを以前の状態に戻す場合、マークされたトランザクションが対象の日付時刻の指定に使われます。  
Oracle 非サポート  
91 SQLWays Documentation Copyright © 1999-2015 
BEGIN TRANSACTION のMicrosoft SQL Server から Oracleへの変換 
Microsoft SQL Server はBEGIN TRANSACTIONにより明示的なまたはネストされたトランザクションを開始する事ができます。トランザクションに対しCOMMITステートメントを実行すると変数 @@TRANCOUNT が自動的にひとつ減算されます。 もしBEGIN TRANSACTIONに名前が指定された場合、Microsoft SQL Serverアプリケーションは一番最初までロールバックするか、BEGIN TRANSACTIONステートメントで定義された位置でロールバックすることができます。  
Oracleでは明示的なトランザクションの開始はサポートされていませんが、Oracleでは一部の作業のロールバックをすることが可能です。これを行うためにはSAVEPOINTステートメントを使用します。SAVEPOINTステートメントにより後でロールバックするためのトランザクションの場所を指定する事ができます。SAVEPOINTステートメントの実行後、処理の継続、トランザクションのコミット、トランザクション全体のロールバック、またはSAVEPOINTへのロールバックを行う事ができます。 
故に、SQLWaysはMicrosoft SQL Server BEGIN TRANSACTION ステートメントの ROLLBACK を Oracle SAVEPOINT ステートメントでエミュレーションします。
SQLWaysは名前付きのBEGIN TRANSACTIONステートメントをSAVEPOINTステートメントに変更します。名前なしのBEGIN TRANSACTIONステートメントは除去されます。 
TABLE 48. BEGIN TRANSACTION の Microsoft SQL Server から Oracleへの変換 
Microsoft SQL ServerOracleDescription
BEGIN BEGIN 
BEGIN TRAN 
BEGIN TRANSACTION 
BEGIN TRANSACTION tran1 SAVEPOINT tran1 
BEGIN TRANSACTION @val_tran1 SAVEPOINT tran1 @val_tran1 が 'tran1'と等しい場合 
BEGIN TRANSACTION @val_tran1 WITH MARK 'transaction 1
SAVEPOINT tran1 @val_tran1 が 'tran1'と等しい場合 
COMMIT ステートメント 
COMMITステートメントを使って明示的にトランザクションを終了させることができます。COMMITステートメントはトランザクションでの全ての変更をデータベースに永続的に反映するのに使用されます。COMMITはロック等の全ての使用リソースを解放しトランザクションを終了するのに使われます。 
TABLE 49. COMMIT ステートメント 
データベース 構文 説明 
Microsoft SQL Server 
COMMIT [ TRAN [ SACTION ] [ 
transaction_name | @tran_name_variable ] ] 
成功した暗黙的なまたは明示的なトランザクションを終了させます。もしCOMMITがトランザクション名または変数付きで定義された場合、Microsoft SQL Server はユーザ定義トランザクションを終了させます。もし @@TRANCOUNT が１であれば、COMMIT TRANSACTIONはトランザクション開始以来行われた全てのデータ変更を永続的に反映し @@TRANCOUNT を０に減算します。もし @@TRANCOUNT が１より大きい場合、COMMIT TRANSACTIONの実行により @@TRANCOUNT は１だけ減算されます。  ネストされたトランザクションでCOMMITが行われた場合、内側のトランザクションのみをコミットするだけでリソースの解放や変更の永続化は行われません。データ変更の永続化やリソースの解放は外側のトランザクションのコミットによってのみ行われます。@@TRANCOUNTが１より大きい時に実行される各COMMIT TRANSACTIONでは単に@@TRANCOUNTの１減算が行われるのみです。@@TRANCOUNTがついに０になった時に、全ての外側のトランザクションがコミットされたことになります。SQL Serverではtransaction_nameが無視されるため、未完了の内側のトランザクションがある場合に外側のトランザクションの名前を指定したCOMMIT TRANSACTIONが発行されても @@TRANCOUNTの１減算が行われるだけになります。  
Oracle COMMIT [WORK] [COMMENT 'text'] 
COMMITステートメントは明示的に現在のトランザクションで行われたデータベース変更を永続化させます。  COMMITキーワードには現在のトランザクションに関連するコメントを付与することができます。コメントは特に分散トランザクションにおいてよく使用されます。テキストは引用符で囲まれた50字を超えない文字列です。 
93 SQLWays Documentation Copyright © 1999-2015 
COMMIT の Microsoft SQL Server から Oracleへの変換 
Microsoft SQL Server でのCOMMIT は暗黙または明示的な（ネストされた）トランザクションを終了させる事ができます。OracleでのCOMMITは現在のトランザクションを終了させます。故にSQLWaysはMicrosoft SQL ServerからOracleへCOMMITを変換する場合、TRANSACTION句とトランザクション名（変数）を削除します。 
TABLE 50. COMMIT の Microsoft SQL Server から Oracleへの変換 
Microsoft SQL ServerOracle
COMMIT COMMIT; 
COMMIT TRAN COMMIT; 
COMMIT TRANSACTION COMMIT; 
COMMIT TRANSACTION tran1 COMMIT; 
COMMIT TRANSACTION @val_tran1 COMMIT; 
       
このセクションでは様々なデータベースでの関数の使用方法とSQLWaysによる変換について記述しています。  
•   数値関数 
•   文字関数 
•   データベースと現在のコネクションの情報を返す 
•   NULL値を置き換える関数 
95 SQLWays Documentation Copyright © 1999-2015 
このサブセクションでは様々なデータベースで使われる数値関数とSQLWaysによる変換について記述します。 
•文字列から数値への変換
       
文字列から数値への変換 
このサブセクションでは様々なデータベースでの文字列を数値に変換する関数とSQLWaysによる変換について記述します。 
TABLE 51. 文 字 列 か ら 数 値 へ の 変 換  
データベース 構文 説明 
Oracle TO_NUMBER (exp1 [, exp2 [, exp3]] ) 
CHAR、VARCHAR2、NCHAR、NVARCHAR2データ型の値である exp1をオプションの書式モデルexp2の形式でNUMBERデータ型の値に変換します。  返されるデータ型： NUMBER.  
exp3 には数値書式要素で返される以下のような文字を指定： •小数点文字 •桁区切り記号 •ローカル通貨記号 •国際通貨記号  
数値書式モデル (exp2) は以下に示す一つ以上の数値書式要素から構成されます ： 
要素 例 説明 
, (カンマ) 9,999 指定位置にカンマを返します。複数のカンマが指定可能 。 制約： •カンマ要素は数値書式モデルの先頭に指定できません  •カンマは小数点の右や数値書式モデルの終端に指定できません 
. (ピリオド) 99.99 小数点を返します。小数点は指定位置のピリオド(.)です。 
制約：ピリオドはひとつだけ指定します 
$ $9999 先頭のドル記号を返します  
0 0999 先頭にゼロを返します 
9990 末尾にゼロを返します 
97 SQLWays Documentation Copyright © 1999-2015 
TABLE 51. 文 字 列 か ら 数 値 へ の 変 換  
データベース構文説明
9 9999 指定された数の数字を返します。値が整数なら先頭にスペースを負数なら先頭にマイナス符号を付加 。先頭のゼロは空白になります。但し固定小終点の整数部の値がゼロの場合はゼロが設定されます。
B B9999 固定小数点の整数部の値がゼロの場合に空白を設定します（書式モデルでの"0"の記述に関わらず）。
C C999 指定した位置にISO通貨記号を返します（現在のNSL_ISO_CURRENCYパラメータの値は exp3に指定)。 
EEEE 9.9EEEE 科学的記数法による値を返します。
D 99D99 指定された位置に小数点文字を返します。現在のNLS_NUMERIC_CHARACTERパラメータの値は exp3で指定。デフォルトはピリオド (.) です。制約： 小数点文字はひとつだけ指定できます。
FM FM90.9 先頭または末尾の空白を削除した値を返します。
G 9G999 指定した位置にグループ分離文字を返します（現在のNLS_NUMERIC_CHARACTERパラメータの値はexp3で指定)。 複数の桁区切り文字が数値書式モデルに指定できます。制約： A 桁区切り文字は小数点やピリオドの右には指定できません。
L L999 指定した位置にローカル通貨記号を返します（現在のNLS_CURRENCTYパラメータの値はexp3で指定)。
MI 9999MI 負の値の先頭にマイナス記号 (-) を返します。正の値の場合は空白を返します。制約：MI 書式要素は数値書式モデルの最後の位置にのみ指定できます。
PR 9999PR 負の値を<山括弧>で返します。正の値は先頭及び末尾を空白に設定して返します。制約： PR 書式要素は数値書式モデルの最後の位置にのみ指定できます。
RN RN 値を大文字のローマ数字で返します。値は1から3999の間の整数です。 
      
TABLE 51. 文 字 列 か ら 数 値 へ の 変 換  
データベース 構文 説明 
  rn rn 値をローマ数字の小文字で返します。値は1から3999の間の整数です。 
S S9999 負の数を先頭にマイナス記号 (-) を付けて返します。正の数には先頭にプラス記号 (+) を付けます。 
制約：S 書式要素は数値書式モデルの最後の位置にのみ指定できます。 
9999S 負の数を末尾にマイナス記号 (-) を付けて返します。正の数には末尾にプラス記号 (+) を付けます。  
TM TM "テキストの最小値"です。できるだけ少ない文字の数を（10進数で）返します。この要素は大文字小文字を区別しません。 デフォルトは TM9 です。デフォルトでは返り値が64文字を超えない限り、固定表記法で文字の数を返します。返り値が64文字を超える場合、Oracleは自動的に科学表記法（指数表現）で文字の数を返します。 制約： •この要素の前に他の要素を指定することはできません •この要素の後には一つの 9、E、または e のみを指定できます 
99 SQLWays Documentation Copyright © 1999-2015 
TABLE 51. 文 字 列 か ら 数 値 へ の 変 換  
データベース構文説明
U U9999 指定した位置に"ユーロ" (または他の) 第2通貨記号 (現在のNLS_DUAL_CURRENCY パラメータの値はexp3で指定) を返す。
V 999V99 値を10のn乗（必要に応じ数値を丸めます）にて返します。ここで、n は "V" の後の9で示されます。
X XXXX 指定の桁数の16進数の値を返します。もし指定された数が整数でない場合、Oracleは値を整数値に丸めます。
制約：•この要素は正の値またはゼロのみが可能です。値が負の場合エラーを返します。•この要素の前には、ゼロまたはFMのみ指定可能です。それ以外の要素にはエラーを返します。もしゼロまたはFMを指定しないと、戻り値の前に空白が一つ設定されます。
MySQL CAST (exp1 AS UNSIGNED [INTEGER]) 
CAST (exp1 AS SIGNED [INTEGER])
exp1 の値を UNSIGNED または SIGNED INTEGER データ型に変換します。 
もし数値演算（+のような）が使用され、演算対象に符号なし整数が含まれる場合、結果の値は符号なしで返されます。演算結果はSIGNED および UNSIGNED キャスト演算子により符号付または符号なしの64bit 整数に変換することができます。
       
このサブセクションでは様々なデータベースで使われる文字関数とSQLWaysによる変換について記述します。  
•   文字列の結合 
•   式を文字列へ変換 
•   ASCII コードを文字に変換 
•   書式付日時式を文字列に変換 
•   書式付き Oracle TO_CHAR(datetime)  を MySQLへ変換 
•   文字列から部分列を返す 
•   文字列を大文字に変換して返す 
101 SQLWays Documentation Copyright © 1999-2015 
文字列の結合
このサブセクションでは様々なデータベースで使われる文字結合関数とSQLWaysによる変換について記述します。 
TABLE 52. 文字列の結合 
データベース構文説明
Oracle exp1 || exp2 [|| expN]…
２つまたはそれ以上のCHAR、VARCHAR2、CLOBデータ型の式を結合して返します。返される値のデータ型：•全ての式 (例えば exp1およびexp2) がCHAR データ型であれば、結果は最大2000文字のCHARデータ型です •いずれもVARCHR2データ型の場合、結果は最大4000文字のVARCHAR2データ型です•もしいずれもCLOBの場合、結果もCLOBです
CONCAT (exp1, exp2) exp1をexp2と結合して返します。exp1 およびexp2 両方ともCHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB、または NCLOBが可能です。 返される値のデータ型：•返される文字列はexp1と同じデータ型です。データ型は引数のデータ型に依存します•二つの異なるデータ型を結合する場合、CONCAT 関数はロスレス変換を行います•故に、引数の一つがLOBである場合、返される値はLOBになります。もし引数の一つが国際データ型である場合、返される値も国際データ型となります
CONCAT 関数は、結合演算子 (||) と同じ機能を持ちます
      
TABLE 52. 文字列の結合 
データベース 構文 説明 
MySQL CONCAT(exp1, exp2 [,expN]…) 
引数を結合した結果の文字列（式）を返します  
もし引数(式) にNULLが含まれていたらNULLを返します。数値型の引数は等価な文字列形式に変換されます。  
Microsoft SQL Server 
exp1 + exp2 [+ expN]… 
２つまたはそれ以上の文字またはバイナリ列、カラム、または文字列やカラム名を組合せ一つの式（文字演算子）にしたものを結合した結果を返します。 式 (exp1, exp2, ..., expN) - は文字またはバイナリデータ型のカテゴリに含まれるデータタイプで構成される式です。ただし image、ntext、または text データタイプを除きます。式は両方とも同じデータタイプでなければならず、または片方の式は暗黙的に他方の式のデータ型に変換できなければなりません。 バイナリ文字列とバイナリ文字列に挟まれた文字を連結する場合には、文字型データへの明示的な変換が行われなければなりません。  返される値のデータ型：最も高い優先度の引数のデータ型。データタイプの優先度は以下の通りです : •sql_variant (最上位) •datetime •smalldatetime •float •real •decimal •money •smallmoney •bigint •int •smallint •tinyint •bit •ntext •text •image •timestamp •uniqueidentifier •nvarchar •nchar •varchar •char •varbinary •binary (最低位) 
IBM DB2 CONCAT (exp1, exp2) exp1 || exp2 [|| expN]… exp1 CONCAT exp2 [CONCAT expN]… 
２つまたはそれ以上の文字列引数を結合し返します。引数は互換性のある型でなければなりません。  関数および演算子(||)の結果は文字列です。長さは２つの引数の長さの合計です。もしいずれかの引数がヌルならば結果もヌルになります。  
注： バイナリ列は文字列とは結合できません。文字列がFOR BIT DATA として定義されている場合も含まれます。 
103 SQLWays Documentation Copyright © 1999-2015 
式を文字列に変換 
このサブセクションは様々なデータベースでの式を文字列に変換する関数とそのSQLWaysによる変換について記述します。 
TABLE 53. 式を文字列へ変換  
データベース構文説明
Oracle TO_CHAR(n [, fmt [, ‘nlsparam’]])
NUMBERデータ型のn を VARCHAR2 データ型の値に変換します。数値書式fmtの指定が可能。
fmt が省略された場合、その有効桁を格納するのに十分な VARCHAR2 の値に変換されます。
'nlsparam' は数値書式要素で返される以下のような文字を指定します： - 小数点文字 - 桁区切り文字 - ローカル通貨記号 
•国際通貨記号
これらの引数の指定方法：’NLS_NUMERIC_CHARACTERS = ’’dg’’ NLS_CURRENCY = ’’text’’ NLS_ISO_CURRENCY = territory ’ 文字d および g はそれぞれ小数点と桁区切り文字を示します。それらは異なる１バイトの文字でなければなりません。区切り文字列の中では、パラメータの値を一重引用符で囲む必要があります。通貨記号には10 文字使用できます。'nlsparam' またはパラメータのいずれか1 つを省略された場合、この関数はセッションのデフォルト・パラメータの値を使用します。
TO_CHAR (nchar | clob | nclob)
NCHAR、NVARCHAR2、CLOB またはNCLOB データをデータベース・キャラクタ・セットに変換します。
Microsoft SQL Server
STR (fl_exp [, length [, decimal]])
数値型データから変換された文字データを返します。fl_exp – 小数点付きの概数値 (float) の式  length – 小数点、符号、数字および空白を含む合計の長さ。デフォルトは10 decimal – 小数点の右の桁数 
返される値のデータ型 – char. 
STR関数に length および decimal パラメータが与えられる場合、それらは正の数でなければなりません。decimalパラメータが０または省略された場合、数は整数に丸められます。指定された長さは小数点の前の数字部と符号（もしあれば）を加えた長さより大きいか等しくなければなりません。短い fl_exp は指定された長さで右詰され、長い fl_exp 指定された小数点位置で切り捨てられます。
例えば、STR(12,10) は結果セット内で右詰され12が返されます。しかしながら、STR(1223,2) は結果が切り捨てられ ** になります。
      
TABLE 53. 式を文字列へ変換 
データベース 構文 説明 
IBM DB2 CHAR ( int_exp) 整数値を固定長文字列で表現した値が返されます。もし引数がヌルになる可能性があれば、結果もヌルの可能性があります。もし引数がヌルならば結果もヌル値です。 
int_exp –整数データ型（SMALLINT, INTEGER 又は BIGINT)を返す式  
結果はSQL整数型定数の形式での文字列表現。返される結果は、引数が負の場合に先頭にマイナス記号が付いた有効桁数であるn文字で構成され、値は左詰めされます。  •最初の引数が small integer の場合： 結果の長さは6です。 結果の文字数が6より少ない場合、結果は右詰され空白が充填されます •最初の引数が large integer の場合：  結果の長さは11です。もし結果の文字数が11より少ない場合、結果は右詰され空白が充填されます •最初の引数が big integer の場合： 結果の長さは20です。 結果の文字数が6より少ない場合、結果は右詰され空白が充填されます  
CHAR ( character_exp [, integer] ) 
最初の引数が全てのタイプの文字列である場合、固定長の文字列を返します。もし最初の引数がヌルになる可能性があれば、結果もヌルの可能性があります。最初の引数がヌルなら結果もヌルです。   
character_exp – CHAR, VARCHAR, LONG VARCHAR, または CLOB データ型の値を返す式  integer – 固定長文字列の長さ属性。値は 0 から 254の間です  
もし文字式の長さが結果の長さ属性より短い場合、結果は空白充填されます。もし文字式の長さ属性が結果の長さより長い場合、切り捨てが行われます。切り捨てられた文字が全て空白か文字式がロング文字列（LONG VARCHAR または CLOB）でない場合は、警告は出力されません。  
105 SQLWays Documentation Copyright © 1999-2015 
TABLE 53. 式を文字列へ変換 
データベース構文説明
CHAR ( decimal_exp [, decimal_ch] )
最初の引数が10進数であれば固定長の10進数の文字列表現を返します。もし最初の引数がヌルになる可能性があれば、結果もヌルの可能性があります。最初の引数がヌルなら結果もヌルです。
decimal-exp – １０進数データ型の値を返す式。もし異なる精度とスケールが必要な場合、DECIMALスカラ関数を使って変換します  decimal-ch – 結果の文字列で小数点を示す１バイトの文字定数。使用できない文字は、数字、プラス記号 ('+')、マイナス記号 ('-') または空白です。デフォルトはピリオド ('.') 文字です 
結果は引数の固定長の文字列表現です。結果は10進数とp 桁文字で構成されます。 p は 負の場合先頭にマイナス記号が付く decimal-exp の桁数です。 結果の長さは2+pです。pは decimal-expの精度です。つまり正の値は常に後ろにひとつ空白が設定されます。
CHAR ( fl_exp [, decimal_ch] )
もし最初の引数がDOUBLEまたはREALである場合、倍精度浮動小数点数字の固定長の文字列表現を返します。もし最初の引数がヌルになる可能性があれば、結果もヌルの可能性があります。最初の引数がヌルなら結果もヌルです。fl_exp –浮動小数点データ型 (DOUBLE or REAL) の値を返す式 decimal_ch – 結果の文字列で小数点を示す１バイトの文字定数。使用できない文字は、数字、プラス記号 ('+')、マイナス記号 ('-') または空白です。デフォルトはピリオド ('.') 文字です  
結果は浮動小数点定数の形式の引数を固定長の文字列で表現したものです。結果の長さは24です。もし負の場合は結果の先頭はマイナス符号になります。負でなければ先頭は数字です。もし引数の値はゼロなら結果は0E0です。結果は引数の値を最も少ない数の文字で表現する、仮数がゼロ以外の一桁の数字で小数点と数字列が続く形式に変換されます。もし結果が24文字より短い場合、右側に空白が充填されます。
      
TABLE 53. 式を文字列へ変換 
データベース 構文 説明 
Sybase Adaptive Server Anywhere 
STR (fl_exp [, length [, decimal]]) 
数字と等価な文字列を返します。  
fl_exp – は概数値 (float, real, または double precision) の式 length – 返される文字の数 (小数点、小数点の前後の数字、および空白を含みます)。デフォルトは10です decimal – 返 さ れ る 1 0 進 数 の 数 。  デ フ ォ ル ト は ０ です   
もし整数部が指定された長さに合わない場合、結果は全てアスタリスク文字で埋めた文字列が返されます。例えば、以下のステートメントは *** を返します： SELECT STR( 1234.56, 3 ) 
Sybase Adaptive Server Enterprise 
STR (fl_exp [, length [, decimal]]) 
指定した数字と等価な文字を返します。 
fl_exp – は概数 (float, real, または double precision) のカラム名、変数、定数の式です length – 返される文字数を設定 (小数点、小数点の前後の数字、および空白を含みます）。デフォルトは10です decimal – 返される10進数字の数を設定。デフォルトは0です  
• 文字列関数 STR は浮動小数点の文字表現をを返します  • length および decimal はオプションです。指定された場合は正の数でなければなりません。STRは結果が指定された長さに収まる様、数値の小数点部を丸めます。長さは小数点や負数の場合の符号を含め十分な長さでなければなりません。結果の10進数部は指定された長さに合わせて丸められます。もし、整数部が長さに合わない場合、STRは指定された長さのアスタリスクを返します。 例えば： select str(123.456, 2, 4)  短い appr_num は指定された長さで右詰されます。長い appr_num は指定された小数点位置で切り捨てられます。 • もし appr_num がNULLならば、NULLを返します 
107 SQLWays Documentation Copyright © 1999-2015 
ASCII コードを文字列に変換 
このサブセクションでは様々なデータベースでの整数のASCIIコードを文字に変換する関数について記述します。 
TABLE 54. ASCII コードを文字に変換 
データベース構文説明
Oracle CHR ( exp1 [USING NCHAR_CS])
データベース文字セットまたは各国語文字セットいずれかでexp1 と等しい２進数値を持つ文字を返します。
USING NCHAR_CS が指定されていない場合、この関数は データベース文字セットの中のexp1と等しい２進数値を持つ文字を VARCHAR2 値として返します。USING NCHAR_CSが指定された場合、この関数は各国語文字セットの中のexp1と等しい２進数値を持つ文字を NVARCHAR2 値として返します。
Microsoft SQL Server
CHAR (exp1) 整数のASCIIコードを文字に変換する文字関数。 
返されるデータ型 – char(1). 
exp1 – は0から255の間の整数。もし整数式が範囲外ならばNULLを返します
CHARは文字列に制御文字を挿入するために使われます。表にはいくつかのよく使用される制御文字が示されています。
MySQL CHAR(exp1 [,expN]…) 引数を整数として解釈し、それら整数のASCIIコード値に対応する文字で作られた文字列を返します。
      
TABLE 54. ASCII コードを文字に変換 
データベース 構文 説明 
IBM DB2 CHR (exp1) 引数で指定されたASCIIコード値を持つ文字を返します。   
引数はINTEGERまたはSMALLINTです。引数の値は0から255の間の値でなければなりません。範囲外の値の場合はNULLが返されます。   
関数の結果はCHAR(1)です。結果がNULLとなる場合があります。引数がNULLなら結果もNULL値となります。 
Sybase Adaptive Server Anywhere 
CHAR (exp1) 数値のASCII値に対応する文字を返します。  
exp1 – はASCII文字に変換される数値です。数値は0から255の間の値でなければなりません。   CHARは整数式が255より大きいかゼロより小さい値の場合にNULLを返します。  
Sybase Adaptive Server Enterprise 
CHAR (exp1) 整数値と等しい文字を返します。  
exp1 – は全ての整数値（tinyint、smallint、または int) のカラム名、変数、または定数の式で値は0から255の間   • CHAR 文字関数はシングルバイト整数値を文字値へ変換します (char は ascii の逆として使用されます)  • CHAR はcharデータ型を返します。もし結果の値がマルチバイト文字の先頭バイトの値であった場合、文字は不定となります • もし char_expr がNULLならば、NULLを返します   
charによる出力書式の再設定 • 文字の連結とcharによるタブや改行表現を使用し、出力書式の再設定を行うことができます。char(10)は復帰文字、char89)はタブに変換されます 
109 SQLWays Documentation Copyright © 1999-2015 
書式付き日時式を文字列に変換 
このサブセクションでは様々なデータベースでの書式付き日時式を文字列に変換する関数およびSQLWaysによる変換について記述しています。
TABLE 55. 書式付き日時式を文字列に変換 
データベース構文説明
Oracle TO_CHAR(date [, fmt [, ‘nlsparam’]])
DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE またはTIMESTAMP WITH LOCAL TIME ZONE データ型のdate日時値を日付書式fmt で指定された書式のVARCHAR2 データ型に変換します。  
もし fmt が省略された場合、date は以下の様に VARCHAR2 データ型に変換されます：•DATE 値は、デフォルトの日付書式の値に変換されます•TIMESTAMP およびTIMESTAMP WITH LOCAL TIME ZONE 値は、デフォルトのタイムスタンプ書式の値に変換されます•TIMESTAMP WITH TIME ZONE 値は、タイムゾーン書式のデフォルトのタイムスタンプの値に変換されます
'nlsparams' は、月と日の名前および略称が戻される言語を指定します。この引数は、次の書式で指定します：'NLS_DATE_LANGUAGE = language 
日付書式モデル (fmt) は以下に示す一つまたはそれ以上の日付時刻書式要素で構成されます：
– / , . : ; “text”
結果に取り込まれる句読点と区切りテキスト
AD A.D.
ピリオド付き/ なしの西暦を示します 
AM A.M.
ピリオド付き/ なしの午前を示します 
      
TABLE 55. 書式付き日時式を文字列に変換 
データベース 構文 説明 
  BC B.C. 
ピリオド付き/ なしの紀元前を示します 
CC SCC 
4 桁で表した年の先頭２桁に１加えた値。S を指定すると紀元前の日付の先頭に負の符号（-）が付けられます。 例えば、値が’1900’ の場合、'20' が返されます 
D 曜日 (1 – 7) 
DAY 曜日。9文字の長さに空白充填 
DD 月における日 (1 – 31) 
DDD 年における日 (0 – 366) 
DY 曜日の省略形 
FF [1..9] 小数部。基数は出力されません（基数文字の追加には X 書式要素を使用します）。戻される日時の値の小数部の桁数を指定するには、FF の後に、1 ～ 9 の数字を使用します。 
HH 時間 (1 – 12) 
HH24 時間 (0 – 23) 
IW ISO 規格に基づく年における週（1- 52 または1- 53） 
IYY IY I 
それぞれISO年の下３桁、２桁、１桁 
IYYY ISO 規格に基づく4 桁の年 
J ユリウス日。紀元前4712 年1 月1 日から経過した日数  
MI 分 (0 - 59)  
MM 月 (01 – 12; Jan – 01) 
MON 月の名前の省略形 
111 SQLWays Documentation Copyright © 1999-2015 
TABLE 55. 書式付き日時式を文字列に変換 
データベース構文説明
MONTH 月の名前。9文字の長さに空白充填 
Q 年の四半期 (1, 2, 3, 4; 1月から３月 = 1). 
RM ローマ数字で表した月 (I – XII; 1月 – I). 
RR 2桁のみを使用し21世紀に20世紀の日付を格納できます： •年が <50 かつ 今の年の最後の２桁が >=50 ならば、今の年の最初の２桁より１大きな値が返されます•年が >=50 かつ 今の年の最後の２桁が <50 ならば、今の年の最初の２桁より１小さな値が返されます
RRRR 年を丸めます。4 桁または2 桁で入力できます。2 桁の場合、RR の場合と同様の結果が返されます。年を4 桁で入力すると、この処理は行われません。
SS 秒 (0 – 59) 
SSSSS 午前0 時から経過した秒 (0 – 86399). 
TZD 夏時間の情報。TZD の値は、夏時間の情報を持つタイムゾーン文字列の省略形です。 TZR で指定した地域と対応している必要があります。
TZH タイムゾーンの時間
TZM タイムゾーンの分
TZR タイムゾーンの地域情報
WW 年における週（1 -53）。第1 週はその年の1 月1 日で始まり、1 月7 日で終了します。
W 月における週（1 ～ 5）。第1 週はその月の1 日で始まり、7 日で終了します。
X ローカル基数文字
指定位置にカンマを付けた年
YYYY SYYYY
4 桁で表した年。S を指定すると紀元前の日付の先頭に負の符号（-）が付けられます。
YEAR SYEAR
フルスペルで表した年。S を指定すると紀元前の日付の先頭に負の符号（-）が付けられます。
YYY YY Y
それぞれ年の下3 桁、2 桁、1 桁 
これらの文字は書式モデルで記述した同じ位置に返却値が設定されます。日付書式モデルの合計の長さは22文字を超えてはなりません。文字リテラルは二重引用文字にて囲みます。
      
TABLE 55. 書式付き日時式を文字列に変換 
データベース 構文 説明 
IBM DB2 
8 VARCHAR_FORM AT (timestamp_exp, fmt_str) 
timestamp_exp を fmt-stringで指定された書式で文字列に変換します。  
timestamp-exp – はタイムスタンプが返される式です。引数はタイムスタンプかCLOBやLONG VARCHARデータ型以外によるタイムスタンプの文字列表現です。文字列表現は254文字を超えないCHARまたはVARCHARデータ型の値を返します。 fmt-string –は結果の書式を示す文字定数です。書式文字列の長さは254文字を超えてはなりません。書式文字列の内容は大文字で指定されます。 書式文字列は以下のとおり： 'YYYY-MM-DD HH24:MI:SS' YYYYは４桁の年を示します。MMは２桁の月（01-12、１月=01）。DDは２桁の日（01-31)を示します。HH24は２桁の時刻(00-24、もし時刻が24の場合、分および秒の値はゼロです）。MIは２桁の分（00-59）を示します。SSは２桁の秒（00-59)を示します。   
関数の結果は、書式設定済みのタイムスタンプ表現が含まれる可変長の文字列です。  
timestamp-exp から一部分 (例えば秒、分など）を選択したい場合、それぞれ SECOND、MINUTE などの関数を使います。例えば、timestamp-expから秒の部分を抽出する必要がある場合、SECOND 関数を使用しなければなりません。 
  TO_CHAR (timestamp_exp, fmt_str) 
文字テンプレートでフォーマットされたタイムスタンプの文字表現を返します。  TO_CHAR は VARCHAR_FORMAT のシノニムです 。 
       <8 CHAR ( datetime_exp 
[, ISO | USA | EUR | JIS | LOCAL] ) 
DATE, TIME および TIMESTAMP データタイプのdatetime_exp を文字列に変換します。もしdatetime_exp がヌルならば、結果もヌル値となります。  
datetime-exp が以下の式の場合： •DATE データ型であれば、結果の長さは10です •TIME データ型であれば、結果の長さは8です •TIMESTAMP データ型であれば、結果の長さは26です datetime_exp 書式モデルはMINUTE、SECOND などの関数を使用して構成することができます。 MINUTE関数の結果とSECOND関数の結果を連結するには、それらの関数の戻り値である整数を文字列に変換する必要があります。IBM DB2の“||” は2つの文字列のみ結合する事ができます。例えば： CHAR( MINUTE( CURRENT TIMESTAMP)) || CHAR( SECOND( CURRENT TIMESTAMP)) 
113 SQLWays Documentation Copyright © 1999-2015 
TABLE 55. 書式付き日時式を文字列に変換 
データベース構文説明
MySQL DATE_FORMAT (date, fmt_str)
date を日付書式 fmt_strで指定された書式にて文字列へ変換します。 
date の値を書式文字列 (fmt_str)に従いフォーマットします。 以下の指定子が書式文字列で使用されます：
%a 曜日の省略形 (Sun..Sat) 
%b 月の省略形 (Jan..Dec) 
%D 英語の接尾辞付きの月の日付 (0th, 1st, 2nd, 3rd 等) 
月における日、数値 (00..31) 
%j 年における日 (001..366) 
月、数値 (00..12) 
%M 月の名前 (January..December) 
%f マイクロ秒 (000000..999999) 
%i 分、数値 (00..59) 
%h %I %l
時刻 (01..12) 
時刻 (00..23) 
%p 午前 または 午後
%r 時間、12時間制 (hh:mm:ss 後ろに AM または PM) 
秒 (00..59) 
%T 時間、24時間制 (hh:mm:ss) 
%U 年における週 (00..53)、週始まりは日曜  
%u 年における週 (00..53)、週始まりは月曜 
      
TABLE 55. 書式付き日時式を文字列に変換 
データベース 構文 説明 
  %V 年における週 (01..53)、週始まりは日曜、%Xと共に使用される 
%v 年における週 (01..53)、週始まりは月曜、 %xと共に使用 
%W 曜日の名前 (Sunday..Saturday)  
%w 曜日 (0=Sunday .. 6=Saturday) 
%X 年における週、週始まりは日曜、４桁数値、%V と共に使用 
%x 年における週、週始まりは月曜、４桁数値、 %v と共に使用  
%Y 年、４桁数値 
%y 年、２桁数値 
%% リテラル ‘%’ 
115 SQLWays Documentation Copyright © 1999-2015 
書式付きOracle TO_CHAR(datetime) を MySQLへ変換 
Oracleの TO_CHAR(datetime, fmt) 関数は日付時刻の値を fmt オプションで指定された書式で文字列に変換します。 
MySQLには DATE_FORMAT関数があり、指定された書式で日付時刻の値を文字列に変換することができます。 
SQLWays はOracleの TO_CHAR 関数を MySQLの DATE_FORMAT 関数に変換し、以下のテーブルの様に書式文字列の要素をOracleのものから対応するMySQLのものに変換します。 
TABLE 56. 書式付きOracle TO_CHAR(datetime) を MySQLへ変換 
MySQLとOracleの間での日付時刻書式指定子のマッピング
MySQLOracle 説明
%a DY 曜日の省略形 (Sun..Sat) 
%b MON 月の名前の省略形 (Jan..Dec) 
%D – 英語の接尾辞付きの月の日付 (0th, 1st, 2nd, 3rd, 等) 
DD 月における日、数値月における日、数値 ((00..31) および (0..31))
%j DDD 年における日 (001..366) 
MM 月、数値 ((00..12) および (0..12)) 
%M MONTH 月の名前 (January..December) 
%f – マイクロ秒 (000000..999999) 
%i MI 分、数値 (00..59) 
%h %I %l
HH HH12
時刻 ((01..12) および (1..12)) 
HH24 時刻 ((00..23) および (0..23)) 
%p AM PM
午前または午後
%r – 時間、12時間制 (hh:mm:ss 後に AM または PM) 
SS 秒 ((00..59) および (0..59)) 
%T – 時間、２４時間制 (hh:mm:ss) 
%u WW IW
週 (00..53)、週始まりは月曜 
%U – 週 (00..53)、週始まりは日曜 
%V – 週 (01..53)、週始まりは日曜、%X と共に使用 
%v WW IW
週 (01..53)、週始まりは月曜、%x と共に使用 
%W DAY 曜日の名前 (Sunday..Saturday) 
%w – 曜日 (0=Sunday .. 6=Saturday) 
      
TABLE 56. 書式付きOracle TO_CHAR(datetime) を MySQLへ変換 
MySQLとOracleの間での日付時刻書式指定子のマッピング 
MySQL Oracle  説明 
%X – 年における週、週始まりは日曜、４桁数字、%V と共に使用  
%x – 年における週、週始まりは月曜、４桁数字、%v と共に使用 
%Y YYYY SYYYY IYYY 
年、数値、４桁  
%y YY IYY 
年、数値、２桁 
– J ユリウス日。紀元前4712 年1 月1 日から経過した日数  
– Q 年の四半期 (1, 2, 3, 4; 1月～3月 = 1) 
– RR ２桁のみを使用し２１世紀に２０世紀の日付を格納できます  • 年が <50 かつ 今の年の最後の２桁が >=50 ならば、今の年の最初の２桁より１大きな値が返されます  • 年が >=50 かつ 今の年の最後の２桁が <50 ならば、今の年の最初の２桁より１小さな値が返されます 
– RRRR 年を丸めます。4 桁または2 桁で入力できます。2 桁の場合、RR の場合と同様の結果が返されます。年を4 桁で入力すると、この処理は行われません 
– W 月における週（1 ～ 5）。第1 週はその月の1 日で始まり、7 日で終了します。  
– SSSSS 真夜中からの経過秒 (0 – 86399) 
– X ローカル基数文字 
– Y,YYY 指定位置にカンマを付けた年 
– YEAR SYEAR 
フルスペルで表した年。S を指定すると紀元前の日付の先頭に負の符号（-）が付けられます.  – YYY ３桁の年 
– Y １桁の年 
– IY ISO規格に基づく２桁の年 
– I ISO規格に基づく１桁の年 
– AD A.D. 
ピリオド付き/ なしの西暦 
– BC B.C. 
ピリオド付き/ なしの紀元前 
– CC SCC 
4 桁で表した年の先頭２桁に１加えた値。S を指定すると紀元前の日付の先頭に負の符号（-）が付けられます。 例えば、'1900' は '20' を返す 
– D 週における日 (1 – 7) 
– A.M. P.M. 
ピリオド付きの午前午後 
– TZH タイムゾーンの時間 
117 SQLWays Documentation Copyright © 1999-2015 
TABLE 56. 書式付きOracle TO_CHAR(datetime) を MySQLに変換 
MySQLとOracleの間での日付時刻書式指定子のマッピング
MySQLOracle (independently from register)説明
– TZM タイムゾーンの分
– TZR タイムゾーンの地域情報
TABLE 57. 変換の例 
OracleMySQL
create procedure sp_to_char_date_format as begin -- GET ACTUAL TIME AND DATE select to_char(sysdate,'DD-MON-YYYY:HH24:MI') from dual; end;
create procedure sp_to_char_date_format() begin -- GET ACTUAL TIME AND DATE select DATE_FORMAT(CURRENT_TIMESTAMP, '%e-%M- %Y:%H:%i') from dual; end;
       
文字列から部分列を返す 
このサブセクションでは、様々なデータベースでの文字列から部分列を返す関数とSQLWaysによる変換について記述しています。 
TABLE 58. 文 字 列 か ら 部 分 列 を 返 す  
データベース 構文 説明 
Oracle SUBSTR (exp1, exp2 [,exp3]) 
文字列 (exp1)のexp2 の位置からexp3の長さ分の部分列を返します。  
• exp2 が０なら、１として扱われます  • exp2 が正の値なら、Oracle は文字列の最初からカウントし最初の文字を見つけます  • exp2 が負の値なら、Oracle は文字列の終わりから逆にカウントします  • exp3 が省略された場合、Oracle は文字列の終わりまでの全ての文字を返します  • exp3 が１より少ない場合、ヌルが返されます  返されるデータ型：  exp1と同じ exp1 は CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB、または NCLOBデータ型のいずれかです。 
SUBSTRへの引数として浮動小数点の値が渡された場合、自動的に整数に変換されます。 文字列 (exp1)のexp2 の位置からexp3の長さ分の部分列を返します。  もし全ての引数がヌルであれば、結果はヌル値となります。 返されるデータ型：  exp1と同じ  
exp2 の値はexp1 が固定長か可変長かにより、１からexp1の最大長までの整数でなければなりません。   exp3 は結果の長さを示す式です。もし指定された場合、exp3 は０からｎまでの整数値でなければなりません。ｎは (exp1の長さ) - exp2 + 1に等しい値です。   exp3 のデフォルト値は、文字列またはバイナリ列の場合、exp2 で指定されるバイト位置から exp1の最後のバイトまでのバイト数です。グラフィック文字列の場合、exp2 で指定される文字からexp1 の最後の文字までのダブルバイト文字の数になります。しかしながら、もし exp1 が可変長文字列でexp2より短い場合、デフォルトはゼロとなり、結果は空白文字列になります。  
IBM DB2 SUBSTR (exp1, exp2 [,exp3]) 
MySQL SUBSTRING (exp1, exp2 [,exp3]) SUBSTRING (exp1 FROM exp2 [FOR exp3]) 
文字列 (exp1)のexp2 の位置からexp3の長さ分の部分列を返します。  
返されるデータ型：exp1と同じ   
• exp2 が正の数であれば、SUBSTRING 関数は文字列の最初からカウントし最初の文字を見つけます  • exp2 が負の値ならば、SUBSTRING 関数は文字列の終わりから逆にカウントします (マニュアル未記載)  • exp3 が省略された場合、SUBSTRING 関数は文字列 exp1からexp2以降全ての文字を部分列として返します。 
119 SQLWays Documentation Copyright © 1999-2015 
TABLE 58. 文 字 列 か ら 部 分 列 を 返 す  
データベース構文説明
Microsoft SQL Server
SUBSTRING (exp1, exp2, exp3)
文字列 (exp1)のexp2 の位置からexp3の長さ分の部分列を返します。  
exp1 – は文字列、バイナリ列、テキスト、イメージ、カラム、またはカラムを含む式です
exp2 – は部分列の開始位置を指定する整数 
exp3 – は部分列の長さ (返される文字列の長さ)を指定する整数 
返されるデータ型：• 式 (exp1) が文字型データタイプであれば、関数は文字データを返します• 式 (exp1) がバイナリデータ型であれば、関数はバイナリデータを返します• 返される文字列は与えられた式 (exp1) と同じデータ型です。ただし、以下のテーブルに例外条件を示します：
与えられた式 (exp1) 返されるデータ型
text varchar 
image varbinary 
ntext nvarchar 
RIGHT (char_exp, int_exp)
文字列 (char_exp) の部分列を返します。返される部分列には終端文字として int_exp が設定されます 。 
返されるデータ型： varchar. 
int exp は結果の長さを示す式です 
LEFT   (char_exp, int_exp)
文字列 (char_exp) の部分列を返します。返される部分列には最初の文字として int_exp が設定されます。 返されるデータ型： varchar. int_exp は結果の長さを示す式です
部分文字列を返すMicrosoft SQL Server 関数を Oracleへ変換 
a) RIGHT 関数の変換 
SQLWays は Microsoft SQL Server のRIGHT 関数を、負の長さのパラメータを指定した Oracle SUBSTR 関数に変換します  
TABLE 59. R I G H T  関 数 の 変 換  
Microsoft SQL Server Oracle 
RIGHT (‘ABCDEF’,5) SUBSTR (‘ABCDEF’,-5); 
b) LEFT 関数の変換  
SQLWays は Microsoft SQL Server のLEFT 関数を、開始位置に 1 を指定した Oracle SUBSTR 関数に変換します。 
TABLE 60.  L E F T  関 数 の 変 換  
Microsoft SQL Server Oracle 
LEFT (‘ABCDEF’,5) SUBSTR (‘ABCDEF’,1,5); 
121 SQLWays Documentation Copyright © 1999-2015 
文字列を大文字に変換して返す
このサブセクションでは、様々なデータベースでの文字列を大文字に変換する関数とSQLWaysによる変換について記述します。 
TABLE 61. 文 字 列 を 大 文 字 に 変 換 し て 返 す  
データベース構文説明
Oracle UPPER (exp) 全ての文字を大文字にした式 (exp) を返します。 exp - はCHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB、NCLOBデータ型の定数を含む定数または変数返されるデータ型： exp と同じデータ型
MySQL UPPER (exp) UCASE (exp)
全ての文字を大文字にした式 (exp) を返します。 exp – は定数または定数を含む変数。  
返されるデータ型： exp と同じデータ型
文字列の中の部分列の位置を返す 
このサブセクションでは様々なデータベースでの指定された文字列の部分列の位置を返す関数とSQLWaysによるその変換について説明します。   
123 SQLWays Documentation Copyright © 1999-2015 
TABLE 62. 文 字 列 の 中 の 部 分 列 の 位 置 を 返 す  
データベース構文説明
Microsoft SQL Server CHARINDEX (substring, string [,start_location ] )
CHARINDEX 関数は指定された文字列の中の部分列の開始位置を返します。Substring は探索対象の一連の文字列を含む式 String  は指定されたシーケンスが探索される文字列または式Start_location は部分列の探索を開始する文字の位置。もしstart_location が指定されないか負の数字やゼロが指定された場合、探索は文字列の先頭から開始されます。データベース互換性レベルが 7.0 およびそれ以上の場合、いずれかの式が NULL であればCHARINDEX は NULL を返します。データベース互換性レベルが 6.5 およびそれ以前の場合、両方の式が NULL の場合のみ、CHARINDEX は NULL を返します。もし部分列が文字列の中に発見できなかった場合、CHARINDEX は 0 を返します。 返されるデータ型： int 
例：title 変数の中のピリオドの位置を返します CHARINDEX(‘.’, @title)
      
TABLE 62. 文 字 列 の 中 の 部 分 列 の 位 置 を 返 す  
データベース 構文 説明 
Oracle INSTR ( string, substring [,start_location [,occurrence] ] ) 
INSTR 関数は指定された文字列の中の部分列の開始位置を返します 。 INSTR は入力文字セットで定義される文字で文字列をカウントします。 String は指定されたシーケンスが探索される文字列の式  Substring は探索対象の一連の文字列を含む式 start_location is は substring の探索を開始する文字列の位置を示すゼロでない整数値。もし値が負の数の場合、INSTR はstring の末尾からカウントし逆方向に探索します。デフォルト値は 1 です。 occurrence は INSTR が部分列を発見する回数を示します。occurrence の値は正の数でなければなりません。デフォルト値は 1 です。 もし substring が string の中に occurrence 回出現しなかった場合、0 の値が返されます。string および substring 両方共に次のデータ型が可能です：CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, または NCLOB。 もし、いずれかの式が NULLの場合、 INSTR は NULL を返します。 返されるデータ型： NUMBER 
例： 次の例は 、 文字列の最初のカンマの位置として7が返されます。 INSTR(‘Austin,Boston,Cardiff’, ‘,’) 
125 SQLWays Documentation Copyright © 1999-2015 
TABLE 62. 文 字 列 の 中 の 部 分 列 の 位 置 を 返 す  
データベース構文説明
Sybase Adaptive Server Anyware
LOCATE (string, substring [,start_location])
指定された文字列の中の部分列の開始位置を返します。
string は探索される文字列 
substring は探索対象の文字列（部分列）。最大長は 255 バイト 
start_location は部分列を探索開始する位置。最初の文字は位置 1 です。 もし start_location が負の値の場合、LOCATE 関数は最初からでなく末尾から探索し、マッチした部分文字列の位置を返します。負の開始位置は文字列の末尾からカウントした探索開始位置を示します。
• start_location が指定された場合、探索は文字列の指定位置から開始されます。• string が substring と同じ場合、関数はNULL 値を返します。 • string が発見できなかった場合、0 が返されます。長さゼロの文字列を探索した場合、1 が返されます。• 引数のいずれかが NULL の場合、結果はNULL になります。
MySQL INSTR(string, substring) 指定された文字列 (string) の中の部分文字列 (substring) の開始位置を返します。 
INSTR は LOCATE 関数に引数２つのみ指定(start_location を省略)した場合と同じです 。
LOCATE(substring, string [,start_location])
指定された文字列 (string) の中の部分文字列 (substring) の開始位置を返します。 
start_location が指定された場合、LOCATE は 文字列 (string) の start_location から探索を開始し、部分列 (substring) の位置を返します。  
• substring が発見できなかった場合、LOCATEは0を返します。
                 
（このページは空白です） 
127 SQLWays Documentation Copyright © 1999-2015 
Microsoft SQL Serverの CHARINDEX を Oracleへ変換 
CHARINDEX 関数は Microsoft SQL Server で指定された文字列内の部分文字列の位置を取得するのに使われます。Oracle はこの目的で INSTR 関数を使用します。これらの関数の構文は似ており、パラメータの順序が異なります。 
SQLWays は Microsoft SQL Server の関数 CHARINDEX を Oracle の関数 INSTR に変換します 。 
TABLE 63. M i c r o s o f t  S Q L  S e r v e r の  C H A R I N D E X  を  O r a c l e へ の 変 換 例  
Microsoft SQL ServerOracle
CREATE PROCEDURE sql_sp_charindex as begin DECLARE @a VARCHAR(10) DECLARE @b VARCHAR(10) charindex (@a,@b) end;
CREATE OR REPLACE PROCEDURE sql_sp_charindex 
AS v_a VARCHAR2(10); v_b VARCHAR2(10); BEGIN 
INSTR(v_b,v_a); 
CREATE PROCEDURE sql_sp_charindex2 as begin DECLARE @a VARCHAR(10) DECLARE @b VARCHAR(10) charindex (@a,@b,1) end;
CREATE OR REPLACE PROCEDURE sql_sp_charindex2 
AS v_a VARCHAR2(10); v_b VARCHAR2(10); BEGIN 
INSTR(v_b,v_a,1); 
       
文字列から文字を削除 (またはトリム)する 
このセクションでは様々なデータベースでの指定文字列から文字を削除（トリム）する関数とSQLWaysによるその変換について説明します。 
TABLE 64. 文字列から文字を削除 (またはトリム) する 
データベース 構文 説明 
Sybase Adaptive Server Anyware 
TRIM (exp) TRIM は exp 文字列から、先頭及び末尾の空白を削除します 
RTRIM (exp) RTRIM は exp 文字列から、末尾の空白を削除します  
LTRIM (exp) LTRIM は exp 文字列から、先頭の空白を削除します 
Microsoft SQL Server RTRIM (exp) RTRIM は exp 文字列から、末尾の空白を削除します   
返されるデータ型： VARCHAR  
exp は文字またはバイナリデータの式であり、定数、変数、またはカラムです。exp は暗黙的にVARCHARに変換されるデータ型でなければなりません。 
LTRIM (exp) LTRIM は exp 文字列から、先頭の空白を削除します  
返されるデータ型： VARCHAR  
exp は文字またはバイナリデータの式であり、定数、変数、またはカラムです。exp は暗黙的にVARCHARに変換されるデータ型でなければなりません。 
129 SQLWays Documentation Copyright © 1999-2015 
Sybase Adaptive Server Anywareの TRIM を Microsoft SQL Serverへ変換 
Sybase Adaptive Server Anyware のTRIM 関数は指定された文字列の先頭および末尾の空白を削除します。Microsoft SQL Server は TRIM 関数をサポートしていませんが、RTRIM および LTRIM 関数により先頭および末尾の空白を削除することができます。
SQLWays は Sybase Adaptive Server Anyware のTRIM 関数を下の変換例のように Microsoft SQL Serverの RTRIM と LTRIMに変換します。 
TABLE 65. S y b a s e  A d a p t i v e  S e r v e r  A n y w a r e  の T R I M  を  M i c r o s o f t  S Q L  S e r v e r へ の 変 換 例  
Sybase Adaptive Server AnywareMicrosoft SQL Server
create procedure asa_sp_trim ( ) begin select trim (' hello '); end;
create procedure asa_sp_trim AS begin 
select rtrim(ltrim(' hello ')) 
データベースと現在のコネクションの情報を返す  
•    現在のユーザの情報を返す 
131 SQLWays Documentation Copyright © 1999-2015 
現在のユーザの情報を返す 
このサブセクションではデータベースに接続している現在のユーザの名前を返す組込み関数について記述します。
TABLE 66. 現 在 の ユ ー ザ の 情 報 を 返 す  
データベース構文説明
Oracle USER データベースに接続しているカレントユーザの名前を返します。返されるデータ型： varchar2 注：CHECK制約の条件として使用することはできません
Informix USER USER演算子はデータベースに接続しているカレントユーザの名前を返します。 返されるデータ型： VARCHAR
NULL値を置き換える関数 
•   最初の非NULL式を返す 
•   検査式がNULLか否かにより一つの式を返す 
133 SQLWays Documentation Copyright © 1999-2015 
最初の非NULL式を返す 
この章では様々なデータベースでの最初のNULLでない式を返す（またはNULL値を置換する）関数およびSQLWaysによる変換について記述します。
メモ：これらの関数は、最初の式がNULLかを判定し２、３番目の式を返す IFNULL のような関数とは異なります。 
TABLE 67. 最 初 の 非 N U L L 式 を 返 す  
データベース構文説明
Oracle NVL (exp1, exp2) NULLを指定した値で置き換える 
exp1と同じデータ型が返されます 
exp1 がNULLである場合、NVL は exp2を返します。もし、exp1 が NOT NULLである場合、NVL は exp1 を返します。引数exp1 および exp2 は任意のデータ型が可能です。
式のデータ型が異なる場合、Oracleは比較を実行する前にexp2 を exp1 と同じデータ型に変換します。
COALESCE (exp1, exp2 [,expN]…)
式リストの中の最初のNULLでない式を返します。
exp1…expN – は 任 意 の デ ー タ 型 の 式
全ての引数がNULLの場合、COALESCE は NULL を返します
Microsoft SQL Server ISNULL (exp1, exp2) 指定された値でNULLを置き換えます 
exp1と同じデータ型が返されます 
exp1 が NULLの場合、 ISNULLは exp2を返します。もし、exp1 がNOT NULLである場合、ISNULL は exp1を返します。引数 exp1 および exp2 は任意のデータ型が可能です。しかし exp2 はexp1と同じデータ型でなければなりません。
COALESCE (exp1, exp2 [,expN]…)
式リストの中から最初のNULLでない式を返します
exp1…expN – は 任 意 の デ ー タ 型 の 式
全ての引数がNULLの場合、COALESCE は NULL を返します 。全ての式は同じデータ型であるか、同じ型に暗黙的に変換可能でなければなりません。
      
TABLE 67. 最初の非NULL式を返す 
Database Syntax Description 
MySQL IFNULL (exp1, exp2) NULLを指定された値で置き換えます  
exp1と同じデータ型が返されます  
exp1 がNULLの場合、IFNULL はexp2を返します。もし exp1 がNOT NULLである場合、IFNULL はexp1を返します。  
COALESCE (exp1, exp2 [,expN]…) 
式リストの中の最初のNULLでない式を返します 
exp1…expN – 任 意 の デ ー タ 型 の 式   
全ての引数がNULLならば、COALESCE は NULL を返します。  
IBM DB2 COALESCE (exp1, exp2 [,expN]…) 
式リストの中の最初のNULLでない式を返します  
exp1…expN – 任 意 の デ ー タ 型 の 式    全ての引数がNULLならば、COALESCE は NULL を返します。   
選択された引数は必要に応じ結果の属性に合わせて変換されます。. 
VALUE (exp1, exp2 [,expN]…) 式リストの中の最初のNULLでないexp を返します。 
VALUE はCOALESCEのシノニムです。 
135 SQLWays Documentation Copyright © 1999-2015 
TABLE 67. 最初の非NULL式を返す 
データベース構文説明
Sybase Adaptive Server Anywhere
COALESCE (exp1, exp2 [,expN]…)
式リストの中の最初のNULLでない式を返します 
exp1…expN – are expressions of any data type 
全ての引数がNULLの場合、COALESCEはNULLを返します。
ISNULL (exp1, exp2 [,expN]…)
式リストの中の最初のNULLでないexpを返します 
ISNULL は COALESCEのシノニムです
Sybase Adaptive Server Enterprise
ISNULL (exp1, exp2) 式リストの中の最初のNULLでない式を返します  
引数 exp1 および exp2は任意のデータ型が可能です。
式のデータ型は暗黙的に変換されるか、明示的に変換関数を使わなければなりません 。
COALESCE (exp1, exp2 [,expN]…)
式リストの中の最初のNULLでない式を返します 
exp1…expN – は 任 意 の デ ー タ 型 の 式   
全ての引数がNULLの場合、COALESCE は NULLを返します 。
       
検査式がNULLか否かにより一つの式を返す 
この章は様々なデータベースでの、特定の検査式の結果がNULLかNOT NULLかによってひとつ又は二つの式を返す関数およびSQLWaysによる変換について記述します。 
メモ：これらの関数は最初のNULLでない値を返すISNULLやCOALESE等の関数とは異なります。 
TABLE 68. 検査式がNULLか否かにより一つのの式を返す 
データベース 構文 説明 
Oracle NVL2 (exp1, exp2, exp3) NVL2は指定した式がNULLかNOT NULLかによって返す値を決めることができます。 
exp1 が NULL値である場合、exp2 の値が返されます。もし、exp1 がNULLでない場合、exp3の値が返されます。引数 exp1 は任意のデータ型が可能です。  
exp2 と exp3 のデータ型が異なる場合、Oracle は比較の実行前に exp3 を exp2 と同じデータ型に変換します。但し exp3 が NULL 定数である場合を除きます。  返されるデータ型は exp2 のデータ型と常に同じです。ただし、exp2 が文字データの場合はVARCHAR2 データ型で返されます。 
Sybase Adaptive Server Anywhere 
IFNULL (exp1, exp2 [,exp3]) IFNULLは指定された式がNULL か NOT NULL かによって返す値を決めることができます。   
exp1 が NULL値である場合、exp2 の値が返されます。もし、exp1 が NULLでない場合、exp3 の値が返されます。もし、exp1 がNULLでなく、かつ exp3 が存在しない場合、NULL が返されます。 
Microsoft SQL Server - 非サポート 
137 SQLWays Documentation Copyright © 1999-2015 
Sybase ASA IFNULL を Microsoft SQL Serverへ変換 
Sybase Adaptive Server Anyware のIFNULL 関数は、検査式がNULLまたはNOT NULLかにより二つのうちの一つの式を返します。
Microsoft SQL Server は IFNULL をサポートしていません。 Microsoft SQL ServerではCASE式が Sybase Adaptive Server Anyware のIFNULL 関数の実装に使用されます。  
SQLWays は Sybase Adaptive Server Anyware のIFNULL 関数を Microsoft SQL Server では最初の式が NULL かを判定するCASE式に変換します。 
TABLE 69. 引 数 ２ つ の  I F N U L L の  変 換 例  
Sybase Adaptive Server AnywhereMicrosoft SQL Server
create procedure asa_sp_ifnull (par int, par2 int) begin declare res int; SET res = IFNULL (par, par2); end;
create procedure asa_sp_ifnull @par INT,@par2 INT 
AS begin declare @res INT SET @res = CASE WHEN @par IS NULL THEN @par2 END 
TABLE 70. 引 数 ３ つ の  I F N U L L  の 変 換 例  
Sybase Adaptive Server AnywhereMicrosoft SQL Server
create procedure asa_sp_ifnull (par int, par2 int, par3 int) begin declare res int; SET res = IFNULL (par, par2, par3); end;
create procedure asa_sp_ifnull @par INT,@par2 INT, @par3 INT 
AS begin declare @res INT SET @res = CASE WHEN @par IS NULL THEN @par2 
ELSE @par3 END end
       
このセクションでは様々なデータベースでのアプリケーションを記述する様々な技法およびSQLWaysによる変換について記述します。  
•   結果セットとして非テーブルデータ（ダミーテーブル）を返す 
•   プロシージャからの結果セットを返す 
139 SQLWays Documentation Copyright © 1999-2015 
結果セットとして非テーブルデータ（ダミーテーブル）を返す 
このサブセクションでは様々なデータベースでの非テーブルデータを返す技法およびSQLWaysによる変換について記述します。
データベースのテーブルに格納されていない情報を結果セットとして返さなければならない場合があります。例えば、現在のユーザ、現在の日付、テーブルのカラムを必要としない定数や計算式などです。
TABLE 71. 結 果 セ ッ ト と し て 非 テ ー ブ ル デ ー タ （ ダ ミ ー テ ー ブ ル ） を 返 す  
データベース構文説明
Sybase Adaptive Server Anywhere
SELECT select_list [FROM [SYS.]DUMMY]
DUMMY テーブルは Sybase Adaptive Server Anywhere で非テーブル結果セットを返すのに使われます 。DUMMY はひとつのローとひとつのカラムを持つ読み取り専用のシステムテーブルです (dummy_col integer NOT NULL) 。 FROM句の中のFROM DUMMY の使用はオプションです。もし 、 FROM 句 で テ ー ブ ル が 指 定 さ れ な か っ た 場 合 、SYS.DUMMY がテーブルとして使用されます。
Microsoft SQL Server SELECT select_list Microsoft SQL Serverでは、FROM句がなく変数への代入(@var1=col1)を行っているSELECT ステートメントは非テーブル結果セットを返します
       
非テーブル結果セットの Sybase Adaptive Server Anywhere から  Microsoft SQL Serverへの変換 
DUMMY システムテーブルは、Sybase Adaptive Server Anywhere で非テーブル型データを結果セットとして返すのに使われます。 
Microsoft SQL Server では、FROM 句がなく変数への代入を行うSELECT ステートメントは、非テーブル型結果セットを返します。  
SQLWays は Sybase Adaptive Server Anywhere の非テーブル型結果セットを Microsoft SQL Serverに変換する場合、FROM [SYS.]DUMMY 句を削除します。  
TABLE 72. S y b a s e  A d a p t i v e  S e r v e r  A n y w h e r e  か ら  M i c r o s o f t  S Q L  S e r v e r へ の 変 換   
Sybase Adaptive Server Anywhere Microsoft SQL Server 
SELECT 1 FROM SYS.DUMMY 
SELECT 1 
SELECT 1 FROM DUMMY 
SELECT 1 
141 SQLWays Documentation Copyright © 1999-2015 
プロシージャからの結果セットを返す 
このサブセクションでは様々なデータベースでのプロシージャからクライアントアプリケーションへ結果セットを返す方法について記述しています。
•結果セットをクライアントへ返す
•結果セットを Microsoft SQL Server から IBM DB2へ変換
       
結果セットをクライアントへ返す 
クエリにより返されるひと組のローは結果セットと呼ばれます。結果セットには、検索条件を満たすローの数によってゼロ、1、または複数のローが含まれます。 
結果セットが返される事により、クライアントアプリケーションはプロシージャが返したローを取得し処理することができます。  
TABLE 73. プロシージャからの結果セット 
データベース 構文 説明 
Microsoft SQL Server 
create procedure proc_name as begin select_statement end 
Microsoft SQL Serverのプロシージャ内での単独のSELECTステートメントはクライアントアプリケーションへ結果セットを返します。 
例えば、"SELECT * FROM Products" は Products テーブルの全てのproductのデフォルトの結果セットを生成します。SQL Server はこの結果セットをクライアントに送ります。 
IBM DB2 create procedure proc_name () LANGUAGE SQL [DYNAMIC RESULT SETS N begin declare cursor_name CURSOR WITH RETURN [TO CALLER | TO CLIENT] FOR select_statement; open cur1; end 
WITH RETURN属性の付いたプロシージャ本体でクローズされないカーソルはクライアントに結果セットを返します。  
WITH RETURN はカーソルがストアドプロシージャからの結果セットとして使用されることを示します 。  
DYNAMIC RESULT SETS N – はストアドプロシージャ用の結果セットの推定の上限数です  
SQLプロシージャの中で、WITH RETURN句付きで宣言されたカーソルがそのSQLプロシージャの終りでもオープンされたままである場合、カーソルはそのSQLプロシージャの結果セットです。他の全てのオープン中のカーソルはそのSQLプロシージャ終了時にクローズされます。  
WITH RETURN TO CALLER は全てのカーソルのデフォルトです 。 TO CALLER – はカーソルが結果セットを呼出し元に返す事ができることを示します。例えば、もし呼出し元が他のストアドプロシージャである場合、結果セットはそのストアドプロシージャに返されます。もし、呼出し元がクライアントアプリケーションである場合、結果セットはそのクライアントアプリケーションに返されます。  TO CLIENT – はカーソルが結果セットをクライアントアプリケーションに返すことを示します。このカーソルは中間のネストしたプロシージャでは参照する事ができません。  
143 SQLWays Documentation Copyright © 1999-2015 
結果セットを Microsoft SQL Server から IBM DB2へ変換 
Microsoft SQL Serverのプロシージャ内の単独のSELECTステートメントはクライアントアプリケーションへ結果セットを返すことができます。
DB2のプロシージャから結果セットを返すためには、カーソルをWITH RETURNオプション付きでカーソルを宣言してオープンする必要があります。
SQLWaysは Microsoft SQL Server の単独のSELECT ステートメントをIBM DB2の DECLARE WITH RETURN カーソルと OPENステートメントに変換します。  
TABLE 74. 結果セットのMicrosoft SQL Server からIBM DB2への変換の例 
Microsoft SQL ServerIBM DB2
create procedure SalesOrder_Test as begin select * from Customers end
create procedure SalesOrder_Test ( ) LANGUAGE SQL DYNAMIC RESULT SETS 1 begin DECLARE cur1 CURSOR WITH RETURN FOR select  *  from Customer s; open cur1; end
       
IBM DB2への移行 
この章ではオブジェクトリレーショナルデータベース管理システムである、IBM DB2サーバへのデータベース移行について説明します。  
•   IBM DB2 データ型 
•   IBM DB2 関数および式 
•   LOAD コマンド 
•   IBM DB2 のバージョンによる差異 
145 SQLWays Documentation Copyright © 1999-2015 
IBM DB2 データ型 
このセクションはIBM DB2がサポートするデータ型について説明します。 
•CHAR, VARCHAR および LONG VARCHAR
•GRAPHIC, VARGRAPHIC および LONG VARGRAPHIC
•BIGINT, INTEGER および SMALLINT
•FLOAT, REAL および DOUBLE
•DECIMAL または NUMERIC
•DATE, TIME および TIMESTAMP
•BLOB, CLOB および DBCLOB
•DATALINK
       
CHAR, VARCHAR および LONG VARCHAR 
CHAR, VARCHAR および LONG VARCHAR データ型は文字型データを格納するのに使用されます。文字データはバイトシーケンスであり、文字値の長さはシーケンスのバイト数です。もし長さが０の場合、その値は空文字列と呼ばれます。この値はNULL値と混同してはいけません。  
CHAR[(n)] [FOR BIT DATA] CHARACTER[(n)] [FOR BIT DATA] 
固定長の文字データ。n の範囲は 1 から 254 文字です。n が指定されない場合、デフォルト値は１です。  CHAR値が格納される場合、指定された長さで右詰で空白充填されます。CHAR値が取得される時には末尾のスペースは削除されます。  
FOR BIT DATA オプションはカラムの内容をビット（バイナリ）データとして扱う様に指定します。他のシステムとのデータ交換の際にコードページの変換は行われません。 
VARCHAR(n) [FOR BIT DATA] CHARACTER VARYING(n) [FOR BIT DATA] CHAR VARYING(n) [FOR BIT DATA] 
可変長の文字列。n の範囲は 1 から 32 672 文字です。  
含まれる文字そのものと長さを示すデータがデータベースに値として格納されます。値が格納される時には末尾のスペースは削除されます。 
FOR BIT DATA オプションはカラムの内容をビット（バイナリ）データとして扱う様に指定します。他のシステムとのデータ交換の際にコードページの変換は行われません。  
LONG VARCHAR [FOR BIT DATA] 
可変長の文字列。最大長は 32 700 文字です。 
FOR BIT DATA オプションはカラムの内容をビット（バイナリ）データとして扱う様に指定します。他のシステムとのデータ交換の際にコードページの変換は行われません。 
147 SQLWays Documentation Copyright © 1999-2015 
GRAPHIC, VARGRAPHIC および LONG VARGRAPHIC 
GRAPHIC, VARGRAPHIC および LONG VARGRAPHIC データ型はグラフィックデータの格納に使用されます。グラフィックデータはダブルバイト文字データのバイトシーケンスであり、その長さはシーケンス内のダブルバイト文字の数です。もし、長さがゼロの場合、この値は空白文字列と呼ばれます。これをNULL値と混同してはなりません。 
ユニコードデータベースの場合、GRAPHIC データ型はCHAR データ型と同じものとみなされます。 
GRAPHIC[(n)] 
固定長のグラフィック文字列。n の範囲は 1 から 127 のダブルバイト文字です。n が指定されない場合、デフォルト値は1です。 
VARGRAPHIC(n) 
可変長のグラフィック文字列。n の範囲は 1 から 16 336 のダブルバイト文字です。 
LONG VARGRAPHIC 
可変長のグラフィック文字列。最大長は 16 350 のダブルバイト文字です。 
BIGINT, INTEGER および SMALLINT 
BIGINT 
19桁の精度の8-バイトの整数。big integer の範囲は -9 223 372 036 854 775 808 から +9 223 372 036 854 775 807です。  
INTEGER INT 
10桁の精度の4-バイトの整数。large integerの範囲は -2 147 483 648 から +2 147 483 647 です。 
SMALLINT 
5桁の精度の2-バイトの整数。smallintの範囲は -32 768 から 32 767 です。 
149 SQLWays Documentation Copyright © 1999-2015 
DECIMAL または NUMERIC 
DECIMAL[(p[,s])] DEC[(p[,s])] NUMERIC[(p[,s])] NUM[(p[,s])] 
パック10進数は暗黙の小数点を持ちます。小数点の位置はその数値の精度 (p) と桁数 (s) により決定されます。 
p は数字の合計数を指定します。精度の範囲は 1 から 31 数字です。 
s は、数字の少数部の数字の数です。負の値や精度より大きな値を取ることはできません。桁数の範囲は 0 からその数値の精度までです。
p が省略された場合のデフォルトは 5 です。 
s が省略された場合のデフォルトは 0 です。その場合、値は小数点または小数部を持たない 事を意味します。  
decimal型変数またはdecimal型カラムの数値の範囲は -n から +nです。n の絶対値は適切な精度と桁数で表現される最大の数値であり、-10^31+1 から 10^31-1 の値です。 
FLOAT, REAL および DOUBLE 
FLOAT[(n)] 
FLOAT データ型は単精度および倍精度浮動小数点数値を格納するのに使用されます。 
単精度浮動小数点数値は、実数の32-ビットの近似値です。数値はゼロ、または -3.402E+38 から -1.175E-37、または 1.175E-37 から 3.402E+38 の値です。n の範囲は 1 から 24です。 IBM DB2 は内部で単精度FLOATデータ型をREALデータ型として表現しています。  
倍精度浮動小数点値は、実数の64-ビットの近似値です。数値はゼロ、または -1.79769E+308 から -2.225E-307、または 2.225E-307 から 1.79769E+308 の値です。n の範囲は 25 から 53 です。 IBM DB2 は内部で倍精度FLOATデータ型を DOUBLE [PRECISION] データ型として表現しています。  
n が指定されない場合のデフォルト値は53です。 
単精度浮動小数点数値  
DOUBLE [PRECISION] 
倍精度浮動小数点数値 
151 SQLWays Documentation Copyright © 1999-2015 
DATE, TIME および TIMESTAMP 
DATE データタイプは日付情報 (year, month, day)を格納するのに使われます。サポート範囲はJanuary 1, 0001 から December 31, 9999 の値です。 
TIME データ型は時刻情報 (hours, minutes, seconds) を格納するのに使われます。サポート範囲は 00 hours 00 minutes 00 seconds から 24 hours 00 minutes 00 seconds の値です。  
hour が 24の場合、minute および second の指定はゼロになります。 
TIMESTAMP 
TIMESTAMP データ型は、日付および時刻情報 (year, month, day, hour, minute, second, および microsecond) を格納するのに使われます。サポート範囲は January 1, 0001 00 hours 00 minutes 00 seconds 000000 microseconds から December 31, 9999 24 hours 00 minutes 00 seconds 000000 microseconds の値です。  
BLOB, CLOB および DBCLOB 
BLOB(n[K|M|G]) 
BLOB (binary large object) は可変長で最大 2 ギガバイト (2 147 483 647 バイト) 長のバイナリ文字列です。 
n のみが指定された場合、n が最大長となります。もし、K、M または G が指定された場合、最大長はそれぞれ 1 024、1 048 576、1 073 741 824 のn倍となり、 n の最大値はそれぞれ 2 097 152、2 048 、2 となります。  
Binary large object は写真、ビデオ、オーディオのようなデータを格納するのに使われます。FOR BIT DATA 文字列と同様に、BLOB 文字列はコードページとは関係しません。  
CLOB(n[K|M|G]) 
CLOB (character large object) は最大2ギガバイト (2 147 483 647 バイト) の可変長文字列です。 もし、長さがゼロの場合、値は空白文字列と呼ばれます。この値をNULL値と混同してはいけません。 
n のみが指定された場合、n が最大長となります。もし、K、M、または G が指定された場合、最大長はそれぞれ 1 024、1 048 576、1 073 741 824 のn倍となり、n の最大値はそれぞれ 2 097 152、2 048、 2 となります。  
Character large object は、フォーマット済みテキスト、HTML、XMLドキュメントのような大きな SBCS (single-byte character sets) 文字ベースデータを格納するのに使われます。 
DBCLOB(n[K|M|G]) 
DBCLOB (double-byte character large object) は最大1 073 741 823文字のダブルバイト文字を格納する可変長のグラフィック文字列です。 
n のみが指定された場合、n が最大長となります。もし、K、M、または G が指定された場合、最大長はそれぞれ 1 024、1 048 576、1 073 741 824 のn倍となり、nの最大値はそれぞれ 1 048 576、1 024、1 となります。  
Double-byte character large object は大きな DBCS (double-byte character sets) 文字ベースのデータを格納するのに使われます。 
153 SQLWays Documentation Copyright © 1999-2015 
DATALINK 
DATALINK 
DATALINK 値は、データベースの外部に格納されたオブジェクトを参照する文字列です。DATALINK の値は Uniform Resource Locator (URL) の構文でエンコードされたファイルまたはファイル名です。  
URL は一般的なフォーマットのテキスト文字列です：  http://www.ispirer.com/datalinks/datalinks.txt 
IBM DB2 関数と式 
このセクションではIBM DB2 SQLステートメントで使われる関数と式について記述します。  
•   IBM DB2 の式 
•単純なCASE 式 
•   IBM DB2 の関数 
•COALESCE •LEFT •LENGTH •RIGHT 
•   IBM DB2 特殊レジスタ 
•CURRENT TIMESTAMP 
155 SQLWays Documentation Copyright © 1999-2015 
IBM DB2 の式 
式とは、値、演算子、値が評価されるSQL関数の一つ以上の組み合わせから構成されます。式はその構成要素のデータ型と同じであると一般的に考えられます。
•単純なCASE 式
単純な CASE 式 
CASE expr WHEN when_expr THEN result_expr {WHEN when_expr THEN result_expr} [ELSE else_expr] END 
単純なCASEはexprを評価し、指定された順に、それぞれのWHEN句毎にexpr = when_expr を評価します。単純なCASE は評価結果がTRUEとなった最初のWHEN句のresult_expr を返します。もし、条件に合致しない 場合、CASE はELSE句が指定されていればelse_expr を、もしELSE句が指定されていない 場合はNULL値を返します。 
この例ではそれぞれの従業員が属する部門のフルネームを列挙するためにCASE式が使われています。  SELECT EMPNO, LASTNAME, CASE WORKDEPT WHEN 'A' THEN 'Administration' WHEN 'B' THEN 'Human Resources' WHEN 'C' THEN 'Accounting' WHEN 'D' THEN 'Design' WHEN 'E' THEN 'Operations' END FROM EMPLOYEE; 
他のデータベースでの同等機能 
TABLE 75. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
Oracle DECODE 式 
Microsoft SQL Server 単純な CASE 式 
157 SQLWays Documentation Copyright © 1999-2015 
IBM DB2 の関数 
関数はひと組の入力データ値とひと組の結果セット値を関連付けるものです。関数は組込みまたはユーザ定義のいずれかです。
組込み関数はデータベースマネージャにより提供され、ユーザ定義関数はユーザによるデータベース関数の拡張に使われます。
•COALESCE
•LENGTH
•RIGHT
COALESCE 
COALESCE(expr, expr2 {, expr }) 
COALESCE はNULLでない最初の引数を返します。引数は指定された順に評価されます。この関数は通常NULL値をNULLでない値に置き換えるために使用されます。  
この例では、全ての本のタイトルと価格を選択しています。もし、該当タイトルの価格がNULLの場合、価格は0.00と表示されます。  SELECT title, COALESCE(price, 0.00) AS price FROM titles; 
TABLE 76. 他 の デ ー タ ベ ー ス で の 同 等 機 能   
Oracle NVL 関数 
Microsoft SQL Server COALESCE およびISNULL 関数 
159 SQLWays Documentation Copyright © 1999-2015 
LEFT(char_expr, int_expr) 
LEFT は char_expr の左端にある int_expr 文字を返します。 
この例ではそれぞれの本のタイトルの左５文字を返します。SELECT LEFT(title, 5) FROM TITLES; 結果セットは以下のようになります：
The B Cooki You C The G The P 
他のデータベースの同等機能
TABLE 77. 他 の デ ー タ ベ ー ス の 同 等 機 能  
Oracle SUBSTR 関数 
Microsoft SQL Server LEFT 関数 
LENGTH 
LENGTH(expression) 
LENGTH 関数は値の長さを返します。引数には組込みデータ型の値を返す式を指定することができます。  
引数が文字列である場合、関数は文字列の文字数を返します。固定長の文字列は空白を含みます。可変長の文字列の場合は、最大長でなく実際の長さになります。  
この例では会社名とそれぞれの社名の長さを返しています。  SELECT CompanyName, LENGTH(CompanyName) FROM CUSTOMERS  結果は以下の通り： CompanyName 
Consolidated Holdings 21 
Eastern Connection 18 
France restauration 19 
Great Lakes Food Market 23 
Island Trading 14 
Let's Stop N Shop 17 
他のデータベースでの同等機能  
TABLE 78. 他 の デ ー タ ベ ー ス で の 同 等 機 能   
Oracle LENGTH 関数 
Microsoft SQL Server LEN 関数 
161 SQLWays Documentation Copyright © 1999-2015 
RIGHT 
RIGHT(char_expr, int_expr) 
RIGHT はchar_exprの右端からint_expr 文字を返します。 
この例ではそれぞれの著者のファーストネームの右５文字を返しています。SELECT RIGHT(au_fname, 5) FROM AUTHORS 結果は以下の通り：
lbert Ann Anne chael ichel 
他のデータベースでの同等機能
TABLE 79. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
Oracle SUBSTR 関数 
Microsoft SQL Server RIGHT 関数 
IBM DB2 特殊レジスター 
特殊レジスターはデータベースマネージャが定義するアプリケーション用の変数でありSQLステートメントで参照する事ができます。 
•   CURRENT TIMESTAMP 
163 SQLWays Documentation Copyright © 1999-2015 
CURRENT TIMESTAMP 
CURRENT TIMESTAMP 
CURRENT TIMESTAMP 特殊レジスターはSQLステートメントの実行時に取得した時計の時刻によるタイムスタンプです。もしこの特殊レジスターがSQLステートメント内で複数回使用された場合、全ての値は単一の取得時刻の物になります。 
この例では、CUSTOMERSテーブルにローを追加します。２番目のカラムの値はローが追加されたタイムスタンプです。 INSERT INTO CUSTOMERS VALUES ('ABC Corp', CURRENT TIMESTAMP); 
他のデータベースでの同等機能
TABLE 80. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
Oracle SYSDATE 関数 
Microsoft SQL Server GETDATE 関数 
IBM DB2 LOAD コマンド 
このセクションでは、ファイル、名前付きパイプ、デバイスからのデータをDB2テーブルに移動するIBM DB2 LOADユーティリティについて記述します。  
ロードユーティリティは大量のデータをテーブルに効率的に移動する事ができます。ユーティリティはLarge Object（LOB）やユーザ定義データ型（UDT）を含むあらゆるデータ型を扱うことができます。ロードユーティリティはインポートユーティリティよりも高速です。インポートユーティリティがSQL INSERTを実行するのに対し、ロードユーティリティはフォーマット済みページを直接データベースに書き込みます。ロードユーティリティはトリガの起動や参照制約やテーブル制約の検査を行いません（インデクスのユニーク検査を除く）。 
•   LOAD コマンドのオプション 
165 SQLWays Documentation Copyright © 1999-2015 
LOAD Command のオプション 
LOAD [CLIENT] FROM filename | pipename | device OF filetype LOBS FROM lobpath MODIFIED BY filetype_mod METHOD load_method [SAVECOUNT n] [ROWCOUNT n] [WARNINGCOUNT n] [MESSAGES message_file] INSERT |REPLACE | RESTART | TERMINATE INTO table_name [(column {, column})] 
•CLIENT - データがリモート接続のクライアント上に存在することを示します。もし、このオプションが指定されない場合、データはサーバ上に存在しなければなりません。
CLIENT オプションは IBM DB2 7.1 以降で有効です。 
この例では、LOADコマンドによりASCIIのテキストファイルをIBM DB2 テーブルにロードしています。LOAD FROM customers.txt OF del MESSAGES customers.log INSERT INTO customers 
IBM DB2 のバージョンによる差異  
このセクションでは IBM DB2 8.x、7.x、6.x、および 5.x のバージョン間の差異について記述します。 
•   LOAD コマンド 
167 SQLWays Documentation Copyright © 1999-2015 
LOAD コマンド 
IBM DB2 LOAD ユーティリティはファイル、名前付きパイプ、デバイスのデータをIBM DB2 テーブルに移動します。ロードユーティリティはインポートユーティリティよりも高速です。インポートユーティリティがSQL INSERTを実行するのに対し、ロードユーティリティはフォーマット済みページを直接データベースに書き込みます。
•CLIENT
要件： IBM DB2 7.1 以降 
データがリモート接続のクライアント上に存在することを示します。もし、このオプションが指定されない場合、データはサーバ上に存在しなければなりません。
以下の例では、LOADコマンドによりASCIIのテキストファイルをIBM DB2 テーブルにロードしています。 LOAD CLIENT FROM customers.txt OF del MESSAGES customers.log INSERT INTO customers 
       
Oracleへの移行 
この章では、オブジェクトリレーションデータベース管理システムであるOracleサーバへのデータベース移行について述べます。 
•   Oracle データ型 
•   Oracle 関数と式 
•   Oracle 予約語 
•   Oracle のバージョンによる差異 
169 SQLWays Documentation Copyright © 1999-2015 
Oracle データ型 
この章ではOracleがサポートするデータ型について記述します。 
•CHAR, NCHAR, VARCHAR2 および NVARCHAR2
•NUMBER および FLOAT
•DATE および TIMESTAMP
•INTERVAL YEAR TO MONTH および INTERVAL DAY TO SECOND
•LONG, RAW および LONG RAW
•BLOB, CLOB, NCLOB および BFILE
•ROWID および UROWID
       
CHAR, NCHAR, VARCHAR2 および NVARCHAR2 
文字データ型はデータベース文字セットまたは各国語文字セットで文字データを格納するために使われます。  
CHAR[(n [BYTE | CHAR] )] 
長さn バイトまたは文字の固定長文字データ。最大長は 2000 バイトでデフォルト値は1です。 
BYTE はそのカラムの長さの単位がバイトである事を示します。CHAR はそのカラムの長さ単位が文字であることを示します。デフォルトは BYTE です。CHAR および BYTE 修飾子は Oracle Version 9 以前では使用できません。 
NCHAR[(n)] 
各国語文字セットでの n 文字またはバイトの長さを持つ固定長文字データ。最大長は各文字を格納するのに必要なバイト数により決まりますが、上限は2000 バイトです。デフォルト値は1です。 
VARCHAR2(n [BYTE | CHAR] ) 
長さn 文字の可変長文字データ。最大長は 4000 バイトです。VARCHAR2 カラムには最大長を指定する必要があります。 
BYTE はカラムの長さ単位がバイトであることを示します。CHAR はカラムの長さ単位が文字であることを示します。デフォルトは BYTE です。CHAR および BYTE 修飾子は Oracle Version 9 以前では使用できません。 
NVARCHAR2(n) 
各国語文字セットでの最大長 n 文字またはバイトの可変長文字データ型。最大長は各文字を格納するのに必要なバイト数により決まりますが、上限は 4000 バイトです。NVARCHAR2 カラムには最大長を指定する必要があります。  
171 SQLWays Documentation Copyright © 1999-2015 
NUMBER および FLOAT 
NUMBER(p,s) 
NUMBER データ型はゼロ、正、負の値を格納する、38桁の精度の固定および浮動小数点数値です。 
p は精度または数字の合計の数です。精度の範囲は 1 から 38 の値です。 
s  は桁数または小数点の右側の数字の数です。桁数の範囲は -84 から 127 の値です。 
整数を指定する場合、次の形式を使います： NUMBER(p) または NUMBER(p,0)  
FLOAT[(p)] 
OracleはANSIデータ型のFLOATをサポートしています。従って浮動小数点数値を指定する場合には、NUMBERの代わりにFLOATデータ型を使用することができます。 
p  は範囲 1 から 126 のバイナリ精度です。もし、p が指定されなかった場合、デフォルト値は 126 です。精度値を２進から１０進に変換する場合、p を 0.30103 倍します。精度値を１０進から２進に変換する場合、１０進精度値を 3.32193 倍します。２進精度の126 数字 はおよそ１０進精度の 38 数字と等価になります。 
DATE および TIMESTAMP 
DATE データ型は日付と時刻情報を格納します。それぞれの DATE 値には、 Oracle は以下の情報を格納します： year、month、day、hour、minute、および second。   
Dateの値は、ANSI 日付リテラル、Oracle 日付リテラル、またはTO_DATE関数により文字や数値から変換されたものを設定する事ができます。ANSI 日付リテラルは時刻部分を 含まないため、'YYYY-MM-DD'の形式で指定しなければなりません。Oracle 日付リテラルのデフォルトのフォーマットは初期化パラメータ NLS_DATE_FORMAT で変更する事ができます。 
Date データの値の範囲は January 1, 4712 BC から December 31, 9999 です。  
Dateの値が時刻なしで指定された場合、デフォルトの時刻は 12:00:00 AM となります。もしDateの値が日付なしで指定された場合、デフォルトの日付は現在の月の最初の日になります。  
TIMESTAMP[(fractional_seconds_precision)] 
TIMESTAMP データ型は DATE データ型を拡張したものです。それぞれのTIMESTAMP 値に Oracleは以下の情報を格納します： year、month、day、hour、minute、second および 秒の小数点部  
fractional_seconds_precision オプションにより秒の小数点部の数字の数を 0 から 9 の範囲で指定する事ができます。デフォルトは 6 です。  
TIMESTAMP データ型は Oracle 9i Release 1 (9.0.1) 以降で利用可能です。  
173 SQLWays Documentation Copyright © 1999-2015 
INTERVAL YEAR TO MONTH および INTERVAL DAY TO SECOND 
INTERVAL YEAR[(p)] TO MONTH 
INTERVAL YEAR TO MONTH データ型は年月で表現される期間を格納します。 
p は YEAR 日付時刻フィールドの数字の数を指定します。値の範囲は 0 から 9 です。デフォルト値は 2 です。 
このデータ型は Oracle 9i Release 1 (9.0.1) 以降で利用可能です。  
INTERVAL DAY[(p1)] TO SECOND[(p2)] 
INTERVAL DAY TO SECOND データ型は秒の小数点部分以外の日時分秒で表現される期間を格納します。 
p1 はDAY 日付時刻フィールドの数字の数を指定します。値の範囲は 0 から 9 です。デフォルト値は 2 です。  
p2 はSECOND 日付時刻フィールドの小数点以下の数字の数を指定します。値の範囲は 0 から 9 です。デフォルト値は 6 です。 
このデータ型は Oracle 9i Release 1 (9.0.1) 以降で利用可能です。  
LONG, RAW および LONG RAW 
LONG カラムは最大長 2^31 - 1 (2,147,483,647) バイトの可変長文字を格納します。テーブルに一つ以上のLONGカラムを定義することはできません。  
RAW(n) 
RAW は可変長データ型です。Oracle はRAWデータの転送時に文字コード変換を行いません。最大長は 2000 バイトです。RAWカラムにはサイズを指定する必要があります。  
LONG RAW 
LONG RAW カラムは最大長 2^31 - 1 (2,147,483,647) バイトの可変長データを格納します。Oracle はLONG RAWデータの転送時に文字コード変換を行いません。  
175 SQLWays Documentation Copyright © 1999-2015 
BLOB, CLOB, NCLOB および BFILE 
組込みLOBデータ型である、BLOB、CLOB、およびNCLOB（内部に保持）、およびBFILE（外部に保持）は、最大4ギガバイトまでのテキスト、イメージ、空間データのような大量かつ非構造化データを格納する事ができます。
BLOB データ型はバイナリラージオブジェクトを格納します。BLOB は上限 4 ギガバイトのバイナリデータを格納できます。 
CBLOB データ型は文字型のラージオブジェクトを格納します。CLOB は上限 4 ギガバイトの文字データを格納できます。 
NCLOB 
NCBLOB データ型はマルチバイト各国語文字セットの文字型ラージオブジェクトを格納します。NCLOB は上限 4 ギガバイトの文字データを格納できます。
BFILE 
BFILE データ型はOracle データベースの外のファイルシステム上に格納されたバイナリファイルLOBにアクセスする事ができます。BFILE カラムは外部サーバのファイルシステム上のバイナリファイルへのポインタとなる位置情報を格納します。最大 4 ギガバイトのファイルをサポートしています。
ROWID および UROWID 
ROWID 
ROWID データ型はデータベースの中での各ローの物理アドレスを格納するのに使用されます。このデータタイプは主にROWID疑似列により返される値のためのものです。  
UROWID[(n)] 
UROWID データ型はインデックス付きの外部テーブルの論理アドレスを格納するために使われます。  
n は UROWID カラムのサイズです。n の範囲は 1 から 4000 です。デフォルト値は 4000 です。  
このデータ型は Oracle 9i Release 1 (9.0.1) 以降で利用可能です。  
177 SQLWays Documentation Copyright © 1999-2015 
Oracle 関数と式 
このサブセクションではOracle SQLステートメントおよびPL/SQLプログラムで使われる関数および式について記述します。 
•Oracle の式
•DECODE 式
•Oracle の関数
•LENGTH•NVL•SUBSTR•SYSDATE
Oracle 式 
式とは、値、演算子、値として評価されるSQL関数の一つ以上の組み合わせで構成されます。一般的に式はその構成要素のデータ型と同じものとして扱われます。 
•   DECODE 式 
179 SQLWays Documentation Copyright © 1999-2015 
DECODE 式 
DECODE(expr, search, result {, search, result} [, default]) 
Oracleは、expr と各search の値を1 つずつ比較します。expr がsearchと等しい場合、Oracle は対応するresult を返します。もし一致する値が見つからない 場合は、default を返します。default が省略されている場合は、NULL を戻します。 
search、resultおよびdefault の値は式から導出できます。 
このクエリはDEPTNOの値をDECODEします。もし、DEPTNOが10の場合、クエリは'ACCOUNTING'を返します。もし、DEPTNO が 20の場合、'RESEARCH' を返します。もし、DEPTNO が 10, 20, 30, または 40 でない場合、クエリは 'NONE' を返します。  SELECT DECODE (deptno,10, 'ACCOUNTING', 20, 'RESEARCH', 30, 'SALES', 40, 'OPERATION', 'NONE') name, loc FROM dept; 
他のデータベースでの同等機能
TABLE 81. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
IBM DB2 単純な CASE 式 
Microsoft SQL Server 単純な CASE 式 
Oracleの関数 
関数はひと組の入力データ値とひと組の結果セット値を関連付けるものです。関数には組込み関数とユーザ定義の関数があります。  
組込み関数はデータベースマネージャにより提供され、ユーザ定義関数はユーザによるデータベース関数の拡張に使われます。 
•   LENGTH 
•   NVL 
•   SUBSTR 
•   SYSDATE 
181 SQLWays Documentation Copyright © 1999-2015 
LENGTH 
LENGTH(string_expr) 
LENGTH は与えられた文字式の文字の数を返します。 
この例では、company name および 各companyの名前の文字数を返しています。 SELECT CompanyName, LENGTH(CompanyName) FROM CUSTOMERS 
結果セットは以下の通り: CompanyName 
Consolidated Holdings 21 
Eastern Connection 18 
France restauration 19 
Great Lakes Food Market 23 
Island Trading 14 
Let's Stop N Shop 17 
他のデータベースでの同等機能
TABLE 82. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
IBM DB2 LENGTH 関数 
Microsoft SQL Server LEN 関数 
NVL(expr1, expr2) 
expr1 がNULLの場合、この関数は expr2 を返します。もし expr1 がNULL出ない場合、この関数は expr1 を返します。NVL関数は通常NULL値を特定の値で置き換えるために使用されます。  
この例では、全ての本の title および priceを選択しています。もし、該当するタイトルの price がNULLの場合、priceは0.00と表示されます。 
他のデータベースでの同等機能  
TABLE 83. 他 の デ ー タ ベ ー ス で の 同 等 機 能   
IBM DB2 COALESCE 関数 
Microsoft SQL Server ISNULL および COALESCE 関数 
183 SQLWays Documentation Copyright © 1999-2015 
SUBSTR 
SUBSTR(string, start [, length]) 
SUBSTR は 文字列 string の start 位置から length の長さ分の部分文字列を返します。 
start が正の値であれば、Oracle は文字列の先頭からカウントします。 
start が負の値であれば、Oracleは文字列の末尾から逆にカウントします。 
length が省略された場合、Oracleは文字列の終わりまで全ての文字を返します。 
この例では、名前の全ての文字を最初のカラムに、イニシャルのみを２番目のカラムに表示しています。SELECT au_fname, SUBSTR(au_fname, 1, 1) FROM AUTHORS; 結果セットは以下の通り：au_fname 
Albert A Ann A Anne A Michael M Michel M 
他のデータベースでの同等機能
TABLE 84. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
IBM DB2 SUBSTR, LEFT および RIGHT 関数 
Microsoft SQL Server SUBSTRING , LEFT および RIGHT 関数
SYSDATE 
SYSDATE 
SYSDATE 関数は現在の日付および時刻を返します。  
この例では現在のシステム日付および時刻を選択しています。  SELECT SYSDATE FROM dual; 
他のデータベースでの同等機能 
TABLE 85. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
IBM DB2 CURRENT TIMESTAMP  特殊レジスター 
Microsoft SQL Server GETDATE 関数 
185 SQLWays Documentation Copyright © 1999-2015 
Oracle の予約語 
Oracleには二重引用符（"）で囲まない限り識別子（テーブルやカラム名等）として使用できない予約語があります。但し、大文字の予約語 ROWID は二重引用符で囲んだとしても識別子として使用することはできません。 
予約語を二重引用符で囲んで識別子として定義した場合、それを参照する場合には常に二重引用符で囲む必要があります。二重引用符で囲まれた識別子は大文字小文字を区別する為、識別子を定義した時と同じ文字で参照しなければなりません。
例えば、もしテーブルを"ELSE" という名前で定義した場合、そのテーブルを参照するには"ELSE" と指定し、"Else" や "eLSE" と指定してはなりません。
Oracle の予約語の多くは他のデータベースでオブジェクトやカラム名として有効です。そのため、他のデータベースからOracle へ移行したテーブルはOracleの予約語を含む場合があります。  
例えば、LEVEL は Oracle の予約語ですが、IBM DB2 や Microsoft SQL Serverではそうではありません。IBM DB2 や Microsoft SQL Server ではLEVEL というカラム名を定義できますが、OracleではLEVELというカラム名は許されません。 
データベースがOracleへ移行された場合、SQLWaysは自動的にOracleの予約語との衝突を自動的に解決します。SQLWaysはテーブルやカラムの名前をOracleの予約語とチェックし、それらを二重引用符で囲みます。予約語 ROWID は "Rowid" で置き換えられます。
SQLWaysは以下のようなOracleの予約語をサポートします： 
TABLE 86. O r a c l e  の 予 約 語  
ACCESS ADD ALL 
ALTER AND ANY 
AS ASC AUDIT 
BETWEEN BY CHAR 
CHECK CLUSTER COLUMN 
COMMENT COMPRESS CONNECT 
CREATE CURRENT DATE 
DECIMAL DEFAULT DELETE 
DESC DISTINCT DROP 
ELSE EXCLUSIVE EXISTS 
FILE FLOAT FOR 
FROM GRANT GROUP 
HAVING IDENTIFIED IMMEDIAE 
IN INCREMENT INDEX 
INITIAL INSERT INTEGER 
INTERSECT INTO IS 
LEVEL LIKE LOCK 
LONG MAXEXTENTS MINUS 
MISLABEL MODE MODIFY 
NOAUDIT NOCOMPRESS NOT 
NOWAIT NULL NUMBER 
      
TABLE 86. O r a c l e  の 予 約 語  
OF OFFLINE ON 
ONLINE OPTION OR 
ORDER PCTFREE PRIOR 
PRIVILEGES PUBLIC RAW 
RENAME RESOURCE REVOKE 
ROW ROWID ROWNUM 
ROWS SELECT SESSION 
SET SHARE SIZE 
SMALLINT START SUCCESSFUL 
SYNONYM SYSDATE TABLE 
THEN TO TRIGGER 
UID UNION UNIQUE 
UPDATE USER VALIDATE 
VALUES VARCHAR VARCHAR2 
VIEW WHENEVER WHERE 
WITH   
187 SQLWays Documentation Copyright © 1999-2015 
Oracle のバージョンによる差異 
Oracle のバージョンはほとんどの場合互換性があります。このセクションでは Oracle 9i, 8i, 8.0.x および 7.3の差異について記述します。
•TIMESTAMP データ型
       
TIMESTAMP データ型 
要件： Oracle 9i Release 1 (9.0.1) およびそれ以降 
TIMESTAMP データ型は DATE データ型の拡張です。Oracle は各TIMESTAMP 値に year, month, day, hour, minute, second および 秒の小数点部を格納します。  
fractional_seconds_precision オプションは、秒の小数点部の数字の数を指定し、値の範囲は 0 から 9 です。デフォルト値は 6 です。 
もっと詳しい情報は、Oracle データ型 を参照してください。 
189 SQLWays Documentation Copyright © 1999-2015 
Microsoft SQL Serverへの移行 
この章ではリレーショナルデータベース管理システムであるMicrosoft SQL Serverへの移行について記述します。 
•Oracleからの移行
•Sybaseからの移行
•データ型 
•Microsoft SQL Server のバージョンによる差異
Oracle から Microsoft SQL Serverへの移行 
このセクションではOracle 9i および8i からMicrosoft SQL Server 2000, 7.0 および 6.5 への移行について詳細な情報を提供します。このマニュアルにはMicrosoft SQL Server と Oracle の差異とSQLWaysがそれらの差異を変換作業においてどのように扱うのかについて説明しています。  
•  Microsoft SQL Server とOracle の関数と 式 
191 SQLWays Documentation Copyright © 1999-2015 
Microsoft SQL ServerとOracleの関数と式 
この章ではMicrosoft SQL ServerとOracleデータベースの関数と式の差異について詳しく記述します。 
•Oracle DECODE 式
Oracleでは、DECODE 式はテーブルのデータ表現を容易に操作するために使われます。SQLWays は Oracle DECODE 式を SQL Server の単純な CASE 式に変換します。 
例えば、このクエリはDEPTNOの値をDECODEします。もし、DEPTNOが10ならば、クエリは 'ACCOUNTING' を返します。もし、DEPTNO が20ならば、'RESEARCH' が返されます。もし、DEPTNO が 10, 20, 30, または 40 でない場合、クエリは 'NONE' を返します。
TABLE 87. DECODE 式 
OracleMicrosoft SQL Server
SELECT DECODE (deptno,10, 'ACCOUNTING', 20, 'RESEARCH', 30, 'SALES', 40, 'OPERATION', 'NONE') name, loc FROM dept;
SELECT CASE deptno WHEN 10 THEN 'ACCOUNTING' WHEN 20 THEN 'RESEARCH' WHEN 30 THEN 'SALES' WHEN 40 THEN 'OPERATION' ELSE 'NONE' END name, loc FROM dept;
より詳しい情報は Oracle DECODE 式および Microsoft SQL Server の単純なCASE式を参照してください。 
Sybase からMicrosoft SQL Serverへの移行 
Microsoft SQL Server と Sybase リレーショナルデータベースシステムはそれぞれのバージョン 4.2 まで共同で開発されてきました。これらのデータベースは多くの類似点があります。 
このセクションではMicrosoft SQL Server と Sybaseの差異について概要を記述します。 
•   データ型 
193 SQLWays Documentation Copyright © 1999-2015 
Microsoft SQL Server と Sybase のデータ型の差異 
この章ではMicrosoft SQL Server と Sybase Adaptive Server databases で使用されるデータ型の差異について詳しく説明します。
より詳しい情報は、Microsoft SQL Server のデータ型 および Sybase のデータ型を参照してください。 
TABLE 88. デ ー タ 型 の 差 異  
SQL Server 
Sybaseのデータ型説明変換
char(n) 1<=n<=8000
char(n) 1<=n<=255
固定長文字データn>255ならば、SQL Serverの char(n) は Sybaseの text に変換されます
nchar(n) 1<=n<=4000
nchar(n) 1<=n<=255
固定長文字データ(ユニコード、マルチバイト文字セット)
n>255ならば、SQL Serverの nchar(n) は Sybaseの text に変換されます
varchar(n) 1<=n<=8000
varchar(n) 1<=n<=255
可変長文字データn>255ならば、SQL Serverの varchar(n) は Sybaseの text に変換されます
nvarchar(n) 1<=n<=4000
nvarchar(n) 1<=n<=255
可変長文字データ(ユニコード、マルチバイト文字セット)
n>255ならば、SQL Serverの nvarchar(n) は Sybaseの text に変換されますt
bigint - Integer, 64-bit SQL Serverの bigint は Sybaseの decimal(19,0)に変換されます
int int Integer, 32-bit 不要
smallint smallint Integer, 16-bit 不要
tinyint tinyint Integer, 8-bit 不要
datetime datetime 日付および時刻不要
smalldatetime smalldatetime 日付および時刻不要
money money 通貨データ不要
smallmoney smallmoney 通貨データ不要
decimal(p,s) 1<=p<=38; 0<=s<=p;
decimal(p,s) 1<=p<= 38; 0<=s<=p;
固定小数点数値データ不要
numeric(p,s) 1<=p<=38; 0<=s<=p;
numeric(p,s) 1<=p<=38; 0<=s<=p;
固定小数点数値データ不要
float(n) 1<=n<=53
float(n) 1<=n<=machine dependent
浮動小数点数値データ不要
- double precision 浮動小数点数値データ、64bit
Sybaseの倍精度は SQL serverの float(53)に変換されます
      
TABLE 88. デ ー タ 型 の 差 異  
SQL Server  
のデータ型 
Sybaseのデータ型 説明 変換 
real real 浮動小数点数値データ、 32bit 不要 
text text 可変長文字データ、最大 2 Gb 
ntext - 可変長ユニコード文字データ、最大 1 Gb 
SQL Serverの ntext は Sybaseの textに変換されます 
binary(n) 1<=n<=8000 
binary(n) 1<=n<=255 
固定長バイナリデータ n>255ならば、SQL Serverの binary(n) はSybaseの imageに変換されます 
varbinary(n) 1<=n<=8000 
varbinary(n) 1<=n<=255 
可変長バイナリデータ n>255ならば、SQL Serverの varbinary(n) はSybaseの imageへ変換されます 
image image 可変長バイナリデータ、最大2 Gb 
bit bit 整数値 0 または 1 SQL Serverの bit は NULL値を設定することができますが、Sybaseのbit は設定できません。SQL Serverの bit はSybaseの tinyint または char(1) に変換されます 
uniqueidentifier - グローバル一意識別子 (GUID) 
SQL Serverの一意識別子はSybase のchar(36)に変換されます 
timestamp timestamp ローの更新時に更新されるユニークな番号 
195 SQLWays Documentation Copyright © 1999-2015 
Microsoft SQL Serverのデータ型 
このセクションではMicrosoft SQL Serverがサポートするデータ型について説明します。 
•char, nchar, varchar および nvarchar
•bigint, int, smallint および tinyint
•datetime および smalldatetime
•money および smallmoney
•decimal および numeric
•float および real
•text および ntext
•binary, varbinary および image
•bit, uniqueidentifier および timestamp
       
char, nchar, varchar および nvarchar 
char[(n)] 
固定長非ユニコード文字データで、長さは n 文字。n は 1 から 8,000まで。格納サイズはn バイトです。  
nchar[(n)] 
固定長ユニコード文字データで、長さは n 文字。n は 1 から 4,000まで。格納サイズはnの２倍のバイトです。  
varchar[(n)] 
可変長非ユニコード文字データで、長さは n 文字。n は 1 から 8,000まで。格納サイズはnではなく、実際にデータが入力された長さ。入力データは長さ０バイトが可能です。  
nvarchar[(n)] 
可変長ユニコード文字データで、長さは n 文字。n は 1 から 4,000まで。格納サイズは実際にデータが入力された長さの２倍。入力データは長さ０バイトが可能です。  
データ定義にてn が指定されなかった場合、n のデフォルトは 1です 
197 SQLWays Documentation Copyright © 1999-2015 
bigint, int, smallint および tinyint 
bigint 
整数（数値全体）データ、値は -2^63 (-9223372036854775808) から 2^63-1 (9223372036854775807)。格納サイズは 8 バイト。 
bigint データ型は SQL Server 2000 以降で利用可能。  
整数（数値全体）データ、値は -2^31 (-2,147,483,648) から 2^31 - 1 (2,147,483,647)。格納サイズは 4 バイト。  
smallint 
整数データ、値は -2^15 (-32,768) から 2^15 - 1 (32,767)。格納サイズは 2 バイト。 
tinyint 
0 から 255の間の整数データ。格納サイズは 1 バイト。  
datetime および smalldatetime 
日付および時刻を表現する日付および時刻データ型  
datetime 
日付および時刻データ、値の範囲は January 1, 1753, から December 31, 9999。 精度は1/300秒または 3.33 ミリ秒。 
smalldatetime 
日付および時刻データ、値の範囲は January 1, 1900, から June 6, 2079。 精度は1分。  
199 SQLWays Documentation Copyright © 1999-2015 
money および smallmoney 
通貨データタイプは通貨または貨幣値を表現します。
money 
通貨データ、値範囲は -2^63 (-922,337,203,685,477.5808) から 2^63 - 1 (+922,337,203,685,477.5807)です。精度は10,000通貨単位です。格納サイズは 8 バイトです。  
smallmoney 
通貨データ、値範囲は - 214,748.3648 から +214,748.3647です。精度は10,000通貨単位です。格納サイズは 4 バイトです。
decimal および numeric 
固定の精度と桁数を持つ数値データ型
decimal[(p[,s])] 
固定の精度と桁数を持つ数値。精度を最大にする場合、有効な値は - 10^38 +1 から 10^38 - 1 です。 
p (精度) は保持される数字の最大合計数であり、小数点の左および右側の数字両方を含みます。精度の値は 1 から精度の最大数です。精度の最大数は 38 です。  
s (桁数) は小数点右側に保持される数字の最大数です。桁数の値は 0 から pまでです。デフォルト値は 0です。故に 0 <= s <= p となります。最大の格納サイズは精度の値により変わります。  
numeric[(p[,s])] 
decimal のシノニムです。 
201 SQLWays Documentation Copyright © 1999-2015 
float および real 
浮動小数点数値データの近似値データ型です。浮動小数点データは近似値であり、値範囲の全てのデータを正確に表現することはできません。
float[(n)] 
浮動小数点データ、値の範囲は - 1.79E + 308 から 1.79E + 308です。 n は 科学的記数法での浮動数値の仮数を格納するビットの数であり、これにより精度と格納サイズが決定されます。 n の値は 1 から 53です。  
浮動小数点数値データ、値の範囲は -3.40E + 38 から 3.40E + 38です。格納サイズは 4 バイト。SQL Serverでは real のシノニムは float(24) です。  
text および ntext 
可変長の文字列 
サーバのコードページの可変長非ユニコードデータ、最大長は 2^31 - 1 (2,147,483,647) 文字。格納サイズは入力されたデータの実際の長さ。  
ntext 
可変長ユニコードデータ、最大長は 2^30 - 1 (1,073,741,823) 文字。格納サイズは入力された文字の２倍。 
203 SQLWays Documentation Copyright © 1999-2015 
binary, varbinary および image 
バイナリデータ型
binary[(n)] 
固定長バイナリデータであり、長さはn バイト。n の値は 1 から 8,000です。格納サイズはn+4 バイト。もしデータ定義にてn が指定されなかった場合のデフォルトは 1 です。  
varbinary[(n)] 
可変長バイナリデータで長さはn バイト。n の値は 1 から 8,000です。格納サイズは実際に入力された値 + 4 バイトであり、 n バイトではありません。入力データ長は0バイトが可能です。データ定義にてn が指定されなかった場合のデフォルトは 1 です。  
image 
可変長バイナリデータ、長さは 0 から 2^31-1 (2,147,483,647) バイトです。 
bit, uniqueidentifier および timestamp 
整数データ型、値は 1, 0, またはNULL  
uniqueidentifier 
グローバル一意識別子 (GUID)。グローバル一意識別子のカラムは NEWID 関数で初期化されるか、以下の形式の文字定数から変換されます： xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。各 x は 0-9 または A-Fの16進数表示です。  
timestamp 
ローが更新されるたびに更新されるデータベースで一意となる数値。timestampのカラムの値はデータベース内でユニークです。格納サイズは 8 バイトです。  
205 SQLWays Documentation Copyright © 1999-2015 
Microsoft SQL Server 関数と式 
この章では Microsoft SQL Server SQL ステートメントと Transact SQL プログラムで使用される関数および式について記述します。
•SQL Server の式
•単純なCASE 式
•SQL Server の関数
•COALESCE•GETDATE•ISNULL•LEFT•LEN•RIGHT•SUBSTRING
SQL Server の式 
式とは、値、演算子、値として評価されるSQL関数の一つ以上の組み合わせで構成されます。一般的に式はその構成要素のデータ型と同じものとして扱われます。 
•   単純なCASE 式 
207 SQLWays Documentation Copyright © 1999-2015 
単純なCASE 式 
構文CASE expr WHEN when_expr THEN result_expr {WHEN when_expr THEN result_expr} [ELSE else_expr] END 
単純なCASEはinput_exprを評価し、指定された順に、それぞれのWHEN句毎にinput_expr = when_expr を評価します。単純なCASE は評価結果がTRUEとなった最初のWHEN句のresult_expr を返します。条件に合致しない 場合、CASE はELSE句が指定されていればelse_expr を、もしELSE句が指定されていない 場合はNULL値を返します。 
この例ではCASE式により本の分類をより分かり易く表示しています。 SELECT Category = CASE type WHEN 'popular_comp' THEN 'Popular Computing' WHEN 'mod_cook' THEN 'Modern Cooking' WHEN 'business' THEN 'Business' WHEN 'psychology' THEN 'Psychology' WHEN 'trad_cook' THEN 'Traditional Cooking' ELSE 'Not yet categorized' END, price AS Price FROM titles 
他のデータベースでの同等機能
TABLE 89. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
IBM DB2 単純な CASE 式 
Oracle DECODE 式 
SQL Server の関数 
関数はひと組の入力データ値とひと組の結果セット値を関連付けるものです。関数には組込み関数とユーザ定義関数があります。 
組込み関数はデータベースマネージャにより提供され、ユーザ定義関数はユーザによるデータベース関数の拡張に使われます。 
•   COALESCE 
•   GETDATE 
•   ISNULL 
•   LEFT 
•   LEN 
•   RIGHT 
•   SUBSTRING 
209 SQLWays Documentation Copyright © 1999-2015 
COALESCE 
COALESCE(expr1 {, exprN }) 
COALESCE はNULLでない最初の引数を返します。引数は指定された順に評価されます。この関数は通常NULL値をNULLでない値に置き換えるために使用されます。
この例では、全ての本のタイトルと価格を選択しています。もし、該当タイトルの価格がNULLの場合、価格は0.00と表示されます。SELECT title, COALESCE(price, 0.00) AS price FROM titles; 
他のデータベースでの同等機能
TABLE 90. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
IBM DB2 COALESCE 関数 
Oracle NVL 関数 
GETDATE 
GETDATE() 
GETDATE 関数は現在のシステム日付および時刻を返します。  
この例では、現在のシステム日付および時刻を取得しています。  SELECT GETDATE() 結果セットは以下の通り： 
July 31 1977  7:00 AM 
この例では、Employees テーブルを生成し、employeeのhire date のデフォルト値として GETDATE を使用しています。 ( id INT NOT NULL, name VARCHAR(100) NOT NULL, hire_date DATETIME DEFAULT GETDATE() ) 
他のデータベースでの同等機能 
TABLE 91. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
IBM DB2 CURRENT TIMESTAMP  特殊レジスター 
Oracle SYSDATE 関数 
211 SQLWays Documentation Copyright © 1999-2015 
ISNULL 
ISNULL(check_expr, replacement_value) 
ISNULL は NULL を指定された置換値で置き換えます。この関数は check_expr がNULLでなければcheck_exprを返します。NULLの場合は replacement_value を返します。 
この例では、全ての本の title および priceを選択しています。もし、該当するタイトルの price がNULLの場合、priceは0.00と表示されます。  SELECT title, ISNULL(price, 0.00) AS price FROM titles 
他のデータベースでの同等機能
TABLE 92. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
IBM DB2 COALESCE 関数 
Oracle NVL 関数 
LEFT(char_expr, int_expr) 
LEFT は char_expr の左端の int_expr 文字を返します。 
この例ではそれぞれの本のタイトルの左５文字を返します： SELECT LEFT(title, 5) FROM titles 結果セットは以下の通り： 
The B Cooki You C The G The P 
他のデータベースでの同等機能 
TABLE 93. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
IBM DB2 LEFT 関数 
Oracle SUBSTR 関数 
213 SQLWays Documentation Copyright © 1999-2015 
LEN(string_expr) 
LEN は与えられた文字式の文字の数を返します。末尾の空白は含みません。 
この例では、company name および 各companyの名前の文字数を返しています： SELECT CompanyName, LEN(CompanyName) FROM Customers 結果セットは以下の通り：CompanyName 
Consolidated Holdings 21 
Eastern Connection 18 
France restauration 19 
Great Lakes Food Market 23 
Island Trading 14 
Let's Stop N Shop 17 
他のデータベースでの同等機能
TABLE 94. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
IBM DB2 LENGTH 関数 
Oracle LENGTH 関数 
RIGHT 
RIGHT(char_expr, int_expr) 
RIGHT はchar_exprの右端からint_expr 文字を返します。  
この例ではそれぞれの著者のファーストネームの右５文字を返しています。 SELECT RIGHT(au_fname, 5) FROM authors 結果セットは以下の通り： 
lbert Ann Anne chael ichel 
他のデータベースでの同等機能 
TABLE 95. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
IBM DB2 RIGHT 関数 
Oracle SUBSTR 関数 
215 SQLWays Documentation Copyright © 1999-2015 
SUBSTRING 
SUBSTRING(expr, start, length) 
SUBSTR は文字、バイナリ、テキスト式の start 位置から length 文字（バイト）分の部分文字列を返します。 
この例では、名前の全ての文字を最初のカラムに、イニシャルのみを２番目のカラムに表示しています。SELECT au_fname, SUBSTRING(au_fname, 1, 1) FROM authors 結果セットは以下の通り：au_fname 
Albert A Ann A Anne  A Michael  M Michel  M 
他のデータベースでの同等機能
TABLE 96. 他 の デ ー タ ベ ー ス で の 同 等 機 能  
IBM DB2 SUBSTR 関数 
Oracle SUBSTR 関数 
Microsoft SQL Server のバージョンによる差異 
Microsoft SQL Server のバージョンはほとんどの場合互換性があります。この章では Microsoft SQL Server 2000, 7.0 および 6.5 の差異について記述します。  
•   bigint データ型 
•   INFORMATION_SCHEMA.ROUTINESビュー 
217 SQLWays Documentation Copyright © 1999-2015 
bigint データ型 
要件： Microsoft SQL Server 2000 およびそれ以降 
bigint データ型は整数 (数値全体) データ、値の範囲は -2^63 (-9223372036854775808) から 2^63-1 (9223372036854775807)。格納サイズは 8 バイト。 
bigint データ型は整数値が int データ型のサポート範囲を超える特別な場合に使用されます。SQL Server での主要な整数データ型は int データ型です。 
INFORMATION_SCHEMA.ROUTINES ビュー 
要件： Microsoft SQL Server 2000 およびそれ以降 
INFORMATION_SCHEMA.ROUTINES ビューによりストアドプロシージャの情報を取得する事ができます。このビューは現在のデータベースの現在のユーザがアクセス可能なストアドプロシージャを各ローに格納しています。 
例えば、以下のクエリは現在のデータベースのストアドプロシージャの owner、name、および定義テキストを返します： select ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_DEFINITION from INFORMATION_SCHEMA.ROUTINES where ROUTINE_TYPE='PROCEDURE' 
INFORMATION_SCHEMA.ROUTINES ビューは SQL Server 2000 で導入されました。このビューは sysobjects、syscomments および他のシステムテーブルに基づいています。 
Microsoft SQL Server 7.0 データベースで同じようなストアドプロシージャの情報を取得するには、以下のクエリを実行します：  select su.name, so.name, sc.text from sysobjects so, syscomments sc, sysusers su where xtype='P' and so.id=sc.id and so.uid=su.uid order by su.name, so.name, sc.colid 
上のクエリは定義テキストが4000文字を超える場合に各ストアドプロシージャ毎に複数の行を返します。 
219 SQLWays Documentation Copyright © 1999-2015 
Sybaseへの移行 
この章では、Sybaseへの移行について説明します。 
Sybase は２種類の基本的なデータベース製品を開発・販売しています：Sybase Adaptive Server Enterprise (ASE) および Sybase Adaptive Server Anywhere (ASA)。  
ASE は市場での長い歴史と定評をもつ企業向けリレーショナルデータベース管理システム (RDBMS) です。 
ASA はモバイル、デスクトップ、ワークグループ向けのリレーショナルデータベース管理システムです。 
•Sybase Adaptive Server Enterprise (ASE)
•Sybase Adaptive Server Anywhere (ASA)
Sybase Adaptive Server Enterprise (ASE) 
このセクションでは、リレーショナルデータベース管理システムであるSybase Adaptive Server Enterprise への移行について説明します。  
•   Sybase ASE のデータ型 
•   Sybase ASE の歴史 
•   Sybase ASE のバージョンの進化 
221 SQLWays Documentation Copyright © 1999-2015 
Sybase ASE のデータ型 
このサブセクションではSybaseがサポートするデータ型について記述します。 
•char, nchar, varchar および nvarchar
•int, smallint および tinyint
•datetime および smalldatetime
•money および smallmoney
•decimal および numeric
•float, double precision および real
•binary, varbinary および image
•bit および timestamp
char, nchar, varchar および nvarchar 
char[(n)] 
単一バイト文字セットの固定長文字データ、長さは n 文字。n の値は 1 から 255です。格納サイズは n バイトです。  
nchar[(n)] 
マルチバイト文字セットの固定長文字データ、長さは n 文字。n の値は 1 から 255です。格納サイズは n*@@ncharsize バイト。  
varchar[(n)] 
単一バイト文字セットの可変長文字データ、長さは n 文字。n の値は 1 から 255です。格納サイズは入力された実際の長さであり、n バイトではありません。  
nvarchar[(n)] 
マルチバイト文字セットの可変長文字データ、長さは n 文字。n の値は 1 から 255です。格納サイズは（入力された実際の長さ *@@ncharsize） バイト。  
データ定義で n が指定されなかった場合のデフォルト長は 1 です。  
223 SQLWays Documentation Copyright © 1999-2015 
int, smallint および tinyint 
整数 (数値全体) データ、値は -2^31 (-2,147,483,648) から 2^31 - 1 (2,147,483,647)。格納サイズは 4 バイト。 
smallint 
整数 (数値全体) データ、値は -2^15 (-32,768) から 2^15 - 1 (32,767)。格納サイズは 2 バイト。  
tinyint 
整数 (数値全体) データ、値は 0 から 255。格納サイズは 1 バイト。 
datetime および smalldatetime 
日付および時刻を表現する日付および時刻データ型 。 
datetime 
日付および時刻データ、値の範囲は January 1, 1753, から December 31, 9999。 精度は1/300秒または 3.33 ミリ秒。格納サイズは 8 バイト。  
smalldatetime 
日付および時刻データ、値の範囲は January 1, 1900, から June 6, 2079。 精度は1分。格納サイズは 4 バイト。 
225 SQLWays Documentation Copyright © 1999-2015 
money および smallmoney 
通貨データタイプは通貨または貨幣値を表現します。
money 
通貨データ、値範囲は -2^63 (-922,337,203,685,477.5808) から 2^63 - 1 (+922,337,203,685,477.5807)です。精度は10,000通貨単位です。格納サイズは 8 バイトです。  
smallmoney 
通貨データ、値範囲は - 214,748.3648 から +214,748.3647です。精度は10,000通貨単位です。格納サイズは 4 バイトです。
decimal および numeric 
固定の精度と桁数を持つ数値データ型 。 
decimal[(p[,s])] 
固定の精度と桁数を持つ数値。精度を最大にする場合、有効な値は - 10^38 +1 から 10^38 - 1 です。  
p (精度) は保持される数字の最大合計数であり、小数点の左および右側の数字両方を含みます。精度の値は 1 から精度の最大数です。精度の最大数は 38 です。デフォルトの精度は18数字です。  
s (桁数) は小数点右側に保持される数字の最大数です。桁数の値は 0 から pまでです。デフォルト値は 0です。故に 0 <= s <= p となります。最大の格納サイズは精度の値により変わります。  
numeric[(p[,s])] 
numeric および decimal データ型はあらゆる点で同一です。唯一の違いは、桁数 0 の numeric データ型は IDENTITY カラムに使用されます。
227 SQLWays Documentation Copyright © 1999-2015 
float, double precision および real 
浮動小数点数値データの近似値データ型です。浮動小数点データは近似値であり、値範囲の全てのデータを正確に表現することはできません。
float[(precision)] 
浮動小数点数値。格納サイズは精度が < 16 の場合 4 バイト、精度が >= 16 の場合に 8 バイトです。精度の値の範囲と格納サイズはマシンに依存します。
精度が 1-15 のfloat データ型のカラムは real データ型として格納されます。それ以上の精度の値は double precision データ型として格納されます
double precision 
浮動小数点数値。格納サイズは 8 バイト。精度の値の範囲と格納サイズはマシンに依存します。 
浮動小数点数値。格納サイズは 4 バイト。精度の値の範囲と格納サイズはマシンに依存します。 
可変長の文字列  
可変長文字データ、最大長は 2^31 - 1 (2,147,483,647) 文字。 
229 SQLWays Documentation Copyright © 1999-2015 
binary, varbinary および image 
バイナリデータ型
binary[(n)] 
固定長バイナリデータであり、長さはn バイト。n の値は 1 から 255です。もしデータ定義にてn が指定されなかった場合のデフォルトは 1 です。  
varbinary[(n)] 
可変長バイナリデータで長さはn バイト。n の値は 1 から 255です。データ定義にてn が指定されなかった場合のデフォルトは 1 です。 
image 
可変長バイナリデータ、長さは 0 から 2^31-1 (2,147,483,647) バイトです。  
Bitおよび timestamp 
整数データ型、値は 1 または 0。0または1以外の整数値も設定可能ですが、常に 1 として扱われます。bit データ型のカラムにNULLを設定することはできません。 
timestamp 
varbinary(8) として定義されるデータ型。格納サイズは 8 バイト。 
Sybase はローが更新される度に timestamp カラムを更新します。ひとつのテーブルには timestamp データ型のカラムをひとつだけ定義できます。 
231 SQLWays Documentation Copyright © 1999-2015 
Sybase ASE の歴史 
Sybase Adaptive Server Enterprise は Sybase により製造販売された最初のリレーショナルデータベース管理システム (RDBMS) である、Sybase SQL Server として誕生しました。  
1987年にUNIXプラットフォーム向けに開発された後、1988年にPC向けの SQL Server for OS/2 がSybase、Microsoft および Ashton-Tateにより共同開発されました。その後 Ashton-Tate はプロジェクトに興味を失い、SQL Server のMicrosoft Windows NTへのポーティング後にはMicrosoft が主なパートナーとなりました。数年間、Microsoft は Sybase のディストリビュータとなり、OS/2およびWindows NT向けにSybase 製品をMicrosoft SQL Server の 名前で 再販しました。  
バージョン4.21のリリース以降、Microsoft と Sybase は製品を共同で販売とサポートを行いました。1993年に Microsoft と Sybaseの間の共同開発ライセンス契約が満了し、両社の共同作業は終了しました。Microsoft がSybase SQL Server のソースコードのコピーを購入後、両社は競合会社として個別に製品の開発を継続することになりました。
Microsoft は製品の使いやすさとウィンドウズとの親和性に重点を置き、Sybase は製品の性能と信頼性を最大化し、ハイエンドハードウェアでの稼働にフォーカスする様になりました。
1995年に Sybase は SQL Server 11.0 をリリースし、1997年にはバージョン 11.5 をリリースしました。以降のリリースから、Sybase は Microsoft SQL Server と差別化するために製品名を Adaptive Server Enterprise (ASE) に変更しました。しかしながら、両製品は共通のバックグラウンドを持つため、最近のバージョンの ASE と Microsoft SQL Server はいまだ多くの類似点を持っています。例えば、ASE および Microsoft SQL Server はとても良く似た (同一ではないが) "Transact-SQL" と呼ばれるSQL 実装があります。  
Sybase SQL Server は実世界のワークロードを処理できる初のクライアントサーバ型RDBMSでした。 更に、Sybase SQL Server はストアドプロシージャ、トリガ、そしてコストベースのクエリ最適化をサポートした初めて商用で成功したRDBMSです。 
最も最近の ASE リリースは ASE 12.5.1 であり、2003年10月にリリースされました。主要なUnix、Linux、および Windows NT/2000、Mac OS Xで稼働します。 
Sybase ASE のバージョンの進化 
バージョン 12.5.1 
1. Dynamically altering the data cache without having to restart the server 
2. Automatic expansion of databases and devices. Databases can be configured to expand automatically when they run out of space. 
3. Supports the UTF-8 sort order. In earlier versions, when using UTF-8, the two sort order choices were binary and no-case (ASCII-only). Version 12.5.1 provides the ability to perform non-binary sort orders in UTF-8. As such, all sort orders available for the unichar and univarchar data types can be used for char or varchar data when the default character set is set to UTF-8. 
4. Allows using unichar and univarchar datatypes with any server's default character set without having first to configure your default character set to UTF-8. 
5. SQL derived tables. A SQL derived table is created with a nested select statement, as in the following example: select * from (select * from t) dt. 
6. Date and time have been added as separate data types. In earlier versions, only datetime and smalldatetime were available. 
7. Added XML mapping. The for xml clause in select statements and the forxmlj function map SQL result sets to SQL-XML document, using the SQLX-XML format defined by the ANSI SQLX standard. 
8. Uses the native XML processor supporting SQL extensions that perform XML query functions on XML documents. Integration of the native XML processor in Adaptive Server provides remarkable performance improvements over the Java-based XQL processor of earlier versions of Adaptive Server. The native XML processor supports standard XML documents and standard XPath queries, which are a subset of the new XQuery language. 
9. Adaptive Server extends its LDAP support to include storage of user information. With LDAP services enabled: 
•   Adaptive Server authenticates clients with data from an LDAP server. Users authenticate with passwords stored on an LDAP server rather than in the syslogins catalog. The LDAP server provides a centralized location for login accounts-both names and passwords. 
•   Adaptive Server servers share user login data stored on the LDAP server. Information formerly stored in syslogins is now managed and stored on an LDAP server. It is cached locally to preserve referential integrity and for other, database-specific uses. 
•   With LDAP enabled, users have a single login and password throughout the enterprise. 
10. Adaptive Server Enterprise Web Services enable Adaptive Server Enterprise to both provide and use Web services. Client applications can access SQL and stored procedures in Adaptive Server using SOAP. 
11. Migrate more easily between Adaptive Server and Microsoft-SQL Server. Adaptive Server 12.5.1 provides enhanced compatibility with Microsoft SQL extensions: 
•   default in the insert statement; 
•   set for variable and value assignments; 
•   square brackets surrounding identifier names; 
•   new built-in function cast() and those added in version 12.5.0.3: len(), left(), day(), month(), year(), str_replace(), newid(), square(). 
233 SQLWays Documentation Copyright © 1999-2015 
•derived tables, which can be used wherever a view can be used, and which can be used in the FROM LIST ofSELECT, SELECT INTO, CREATE VIEW, and INSERT statements.
バージョン 12.5.0.3 
1. Asynchronous log service (ALS) and optimistic index locking help resolve drastically increased contention on suchkey resources as the log, the spinlocks that guard the log, and the address locks, increasing Adaptive Server scalability in systems using four or more online engines. 
2. Allows creating and managing multiple temporary databases in addition to the system tempdb, which was theonly temporary database in the server in earlier versions of Adaptive Server. 
3. Improved performance for select into.
4. New functions:
•year;
•month;
•str_replace;
•square;
•left;
•next_identity;
•identity_burn_max;
バージョン 12.5.0.1 
1. Adaptive Server is available in the Enterprise Edition, the Small Business Edition, and the Developer's Edition. TheEnterprise Edition of Adaptive Server is a full-featured server that can run all optional features. The Small Business Edition of Adaptive Server includes the features required by most small businesses, but excludes some of the more advanced features. The Developer's Edition is designed for you to design and build applications for Adaptive Server in a development environment. Earlier versions of Adaptive Server were sold either at the Enterprise Level or the Workplace Level. 
2. ASE Replicator extends Adaptive Server Enterprise capabilities and provides basic replication from a primarydatabase to one or more replicate databases. ASE Replicator: 
•Replicates both tables and stored procedures;
•Maintains database integrity and transactional consistency at multiple sites;
•Provides guaranteed delivery of replicated data;
•Manages database objects with a publish-and-subscribe model;
3. The Extensible Query Language (XQL) result set feature allows accessing query results as objects, rather than asstrings, and extracting SQL base types easily from an XML document, without parsing results or writing code. The XQL engine is written in Java, so creating a Java object is easy. The engine allows: 
•Iterating through XQL result sets to extract XML fragments;
      
•   Converting XML into SQL data, for insertion into database tables; 
•   Getting the results as a DOM (Document Object Model) object; 
バージョン 12.5 
1. Dynamic reconfiguration. 
•   Dynamic memory allocation. Allows allocating total physical memory dynamically. Many of the configuration parameters that affect memory are now dynamic, and the server does not have to be restarted for them to take effect. 
•   For Adaptive Server 12.5, both the data cache and the procedure cache are specified as absolute values. The sizes of the caches do not change until DBA reconfigure them. In earlier versions of Adaptive Server, the size of the procedure cache was based on a percentage of the available memory. After DBA configured the data cache, whatever was left over was allocated to the procedure cache. 
2. Extends Java capabilities. Developers can now wrap Java static methods in SQL names and create SQLJ stored procedures or functions that developers can use as would Transact-SQL stored procedures or built-in functions. This new functionality: 
•   Allows Java methods to return output parameters and result sets to the calling environment. 
•   Allows developers to take advantage of traditional SQL syntax, metadata, and permission capabilities. 
•   Complies with Part 1 of the ANSI SQLJ standard specification. 
•   Allows developers to use existing Java methods as SQLJ procedures and functions on the server, on the client, and on any SQLJ-compliant, thirdparty database. 
3. XML in the database. XML allows defining own application-oriented markup tags. This feature, written entirely in Java, also includes methods for storing XML documents and generating them from SQL data. 
User can: 
•   Select raw data from Adaptive Server using XQL and display it as an XML document. User can also store XML 
documents in Adaptive Server. 
•   Use the Java XML parser provided by Sybase, which allows you to install his query engine as either a standalone program or inside Adaptive Server. 
4. Supporting union operators in select statements that define views. 
5. Using Internet directory services (LDAP). 
6. Implementing Secure Sockets Layer (SSL) protocol. 
7. Provides the Enterprise Java Beans (EJB Server), a component transaction server. EJB Server provides the framework for creating, deploying and managing middle-tier business logic in the form of EJBs in a multitier environment. 
8. External file system support. Enables SQL access to file system directories and files. The supported syntax is: create [existing] table fname external file at "directory_pathname" column delimiter "delimiter". 
9. Row-level access control. Row-level access control enables the Database owner or table owner to control the rows in a table that user can access, based on their identification or profile and the privileges the user has from the application level. 
235 SQLWays Documentation Copyright © 1999-2015 
10. Java.net support. With java.net, developers can create client-side Java networking applications within the server.Developers can create a network Java client application that connects to any server, which enables Adaptive Server to function as a client to external servers. Developers can: 
•Download documents from any URL address on the Internet.
•Send e-mail messages from inside the server.
•Access documents using XML.
11. unichar support. Adds two new datatypes using UTF-16 encoding of the Unicode char. The unichar andunivarchar datatypes are independent of the existing char and varchar datatypes, but have the same functionality. Unichar is a fixed-width, non-nullable data type (like char) and univarchar is a variable-width, nullable data type (like varchar). The set of the built-in string functions that operate on char and varchar, also operate on unichar and univarchar. Unlike the existing char and varchar, the new unichar and univarchar only store UTF-16 characters and have no relation to the default character set or default sort order of Adaptive Server. To use these news datatypes, the default character set for the server must be set to UTF-8. 
バージョン 12.0 
Availability and manageability: 
1. Sybase Failover for a high availability system. Sybase Failover enables Adaptive Server to work in a highavailability cluster in an active-active configuration. Both nodes in the cluster include Adaptive Servers managing independent workloads and capable of taking over each other's workload in the event of a failure. The Adaptive Server that takes over the workload is called a secondary companion, and the Adaptive Server that fails is called the primary companion. Together they are companion servers. This movement from one node to another is called failover. After the primary companion is ready to resume its workload, it is moved back to its original node. This movement is called failback. Clients connected to the failed Adaptive Server automatically reestablish their connection via the second machine. 
2. Supporting UNIX files system. Introduces a new dsync setting for database device files, which controls whether ornot data written to those files are buffered. When the dsynch setting is on, Adaptive Server opens a database device file using the UNIX dsync flag. The dsync flag ensures that data is written to the device file directly on the physical storage media, and Adaptive Server can recover data on the device in the event of a system failure. 
3. Modifying an existing table's schema with alter table. Includes new syntax for alter table that allows users to add,drop, or modify a table's columns. Alter table allows users to modify a column's data type, length, locking scheme, or default value. Alter table also allows users to add, drop, or modify an IDENTITY column and to add a null or non- null column. 
4. Suspending database updates with quiesce database command. User may want to suspend database updates touse external database backup utility, or to separate a database from its mirror for reporting purposes. 
Performance and productivity: 
1. Provides a runtime environment for Java for executing Java code in the server. Adaptive Server's Java capabilitiesprovide users with powerful ways of managing and storing both data and logic, using a language that is both portable and widely available. 
•Java programming language can be used as an integral part of Transact-SQL.
•Java code can be reused in different layers of an application - client, middle-tier, server - and can beconsequently used wherever it makes most sense.
•Java provides a more powerful language than stored procedures for building logic in the database.
•Java classes become rich, user-defined datatypes.
•Methods of Java classes provide new functions accessible from SQL.
      
2. Merge joins as a query execution method for equijoins. Previous versions of Adaptive Server performed all join queries as nested-loop joins. Merge joins can produce dramatic improvements in query execution time, especially for joins involving several very large tables. 
3. Query costing improvements. The following changes help improve the accuracy of optimizer costing and provide additional paths for query execution: 
•   Transitive closure can be applied to joins. 
•   Predicate factoring and transformation can improve costing for queries using or. 
•   Special like optimization for leading wildcards in strings. 
4. ANSI syntax for joining tables or views. Previous versions of Adaptive Server provided syntax only for a transact- SQL join, which include *= and =* symbols for specifying a right or a left join, respectively. 
5. Dynamic execution of Transact-SQL. Adaptive Server version 12.0 provides an extension to the execute command that enables defining transact-SQL commands dynamically at execution time. Applications and procedures can use the new execute() syntax in cases where table and column names are not known until the application or procedure executes. 
6. Text and image data type enhancements. Adaptive Server version 12.0 improves the storage format for text and image datatypes. Changes to the storage format are transparent to end-user applications, but they enable Adaptive Server to perform random access when querying data. This improves query performance over early versions, which had to access text and image data sequentially. The new storage format for text and image datatypes also enables Adaptive Server to asynchronously prefetch the data into an existing buffer pool. 
7. Adaptive Server can capture query text and save an abstract plan for a query in a new system table called sysqueryplans. Using a rapid hashing method, incoming SQL queries can be compared to stored query text, and if a match is found, the saved abstract plan is used to execute the query. 
8. Adaptive Server version 12.0 introduces disable trigger option of the alter table command to disable any triggers in a database before load the database, reducing the time required to load the database. 
9. Adaptive Server version 12.0 allows dividing each cache into partitions, each with its own spinlock. In the previous versions, each task that needs to access the data cache holds a spinlock on the cache while accessing it. With a large number of engines and a high transaction rate, contention for buffer cache spinlocks can slow performance. 
Distributed processing: 
1. Adaptive Server version 12.0 introduces several Distributed Transaction Management features, which: 
•   Bring Adaptive Server into full compliance with the X/Open XA protocol when acting as a resource manager, without requiring additional services as XA-Server. 
•   Provided support for distributed transactions coordinated by Microsoft Distributed Transaction Coordinator 
(MSDTC). 
•   Ensure consistent commit or rollback for all transactions that update Adaptive Server data via remote procedure calls (RPCs) and Component Integration Services. 
•   Provide the framework to support additional distributed transaction management protocols in the future. 
バージョン 11.9.2 
1. Direct Updates Through Joins. In version 11.9.2, many restrictions on when direct updates can be performed have been removed. 
2. Character Set Changes: 
237 SQLWays Documentation Copyright © 1999-2015 
•Adaptive Server includes support for the European currency symbol, or "Euro".
•Adaptive Server can now perform character set conversions that cause a change in the data length;
バージョン 11.9 
1. New Locking Schemes. The Adaptive Server version 11.9 provide two new locking schemes to improve theconcurrence and performance of Adaptive Server: 
•Datapages locking, which locks only the data pages;
•Datarows locking, which locks only the data rows, also known as row-level locking;
The datapages and datarows locking schemes share many characteristics, including the fact that they do not acquire locks on index pages, so together they are often referred to as the data-only locking schemes. 
The pre-11.9 locking scheme continues to be support; it is called allpages locking. Allpages locking locks the data pages and index pages affected by query. 
When a query updates a value in a row in an allpages-locked table, the data page is locked with an exclusive lock. Any index pages affected by the update are also locked with exclusive locks. These locks are transactional, meaning they are held until the end of the transaction. 
In datapages locking, entire data pages are still locked, but index pages are not locked. When a row needs to be changed on a data page, that page is locked, and the lock is held until the end of the transaction. 
In datarows locking, row-level locks are acquired on individual rows on data pages. Index rows and pages are not locked. When a row needs to be changed on a data page, a nontransactional latch is acquired on the page. The latch is held while the physical change is made to the data page, and then the latch is released. The lock on the data row is held until the end of the transaction. The index rows are updated using latches on the page, but are not locked. Index entries are implicitly locked by acquiring a lock on a data row. 
2. The create index command allows you to specify ascending or descending order for each column in the index. Inearlier versions, all indexes were created in ascending order for all columns. Scans that needed to read the data in reverse order could scan the index backward, but if the required order was a mix of ascending and descending order on the keys, the query needed to perform a sort step. 
3. Transact-SQL syntax provides new commands and options that affect locking:
•Select, delete, update, readtext, and writetext commands now include the readpast option. This option allowsthe command to skip all pages or rows that are not immediately accessible due to incompatible locks.
•A new command, lock table, explicitly locks entire tables in either shared or exclusive mode.
•Server-level and session level options that specify how long tasks wait for locks.
•Support for repeatable reads transaction isolation level (level 2) for data-only-locked tables.
バージョン 11.5 
1. Asynchronous prefetch improves performance by anticipating the pages that will be required for certain well-defined classes of database activities whose access patterns are predictable. The I/O requests for these pages are issued before the query needs them so that most pages are in cache by the time query processing needs to access the page. 
2. Simplifies standard SQL expressions by allowing a case expression instead of an if...else construct.
3. OmniConnect has been replaced by Component Integration Services (CIS). The Component Integration Services(CIS) feature allows connecting to remote Sybase and non-Sybase databases. It presents a uniform view of enterprise data to client applications and provides location transparency to the data sources that clients access. 
      
4. Create index enhancements. Create clustered index…with sorted_data does not sort or copy data except when certain optional clauses are specified to create index. If these clauses are specified for partitioned tables, a parallel sort must be performed. In earlier releases of SQL Server, use of the create clustered index…with sorted_data allowed to skip the sort step on data that was already in sorted order, however, the data pages always copied to a new location on the data devices. 
5. Descending index scan optimization. Descending index scan optimization is a performance enhancement that can improve the performance of queries that use the desc keyword in order by queries to return result sets in descending order. In earlier releases of SQL Server, descending result sets required a worktable and a sort. In Adaptive Server 11.5, the optimizer can choose to use the index and avoid the sort step, if the strategy reduces the query cost. 
Descending index scan can speed the use of both clustered and non-clustered index access, reduce the tempdb space required for temporary tables, save the CPU time required for sorts, and shorten the time that locks are held, if descending scans use holdlock or transaction isolation level 3.However, there can be increased chance of deadlocking in some applications. 
This feature does not change the syntax for the order by clause, it only changes the way that order by clauses with the desc keyword can be optimized. 
6. Directory services. Adaptive Server 11.5 provides an alternative to using the traditional interfaces file by supporting the ability to connect to network service information throw third-party directory service provider. 
7. Extended Stored Procedures (ESPs). This release support both user-defined and system-defined extended stored procedures. 
ESPs provide a method for calling procedural language function from within the Adaptive Server. The procedural language in which the functions are written must be capable of calling C language functions and manipulating C data types. 
ESPs allow Adaptive Server to perform a task outside Adaptive Server in response to an event occurring within Adaptive Server. For example, an email notification could be sent in response to an event occurring within the RDBMS. 
The interface to ESPs is similar to the interface to system procedures and user-defined stored procedures. The difference is that an ESP executes procedural language code, rather than Transact-SQL statements. 
Extended stored procedures are implemented by an Open Server application called XP Server, which runs on the same machine as Adaptive Server. Running ESPs in a separate process protects Adaptive Server from failing because of faulty ESP code. Adaptive Server and XP Server communicate through the remote procedure calls (RPCs). 
The function that implements the ESP is compiled and linked into a dynamic linked library (DLL) or shared library. Adaptive server looks in the system tables for the function that has the same name as requested ESP and passes the function name and the DLL name to XP server. 
8. Adaptive Server allows managing individual metadata caches for: 
•   User indexes. 
•   Objects such as procedures, triggers, views, rules, and defaults. 
•   Databases. 
Managing individual metadata caches for these objects is a beneficial for a server that contains a large number of user indexes and objects and where there is high concurrency among users. 
9. Parallel bulk copy. Parallel bulk copy allows coping data in parallel to Adaptive Server from files. Parallel bulk copy substantially increases performance during bcp sessions because large bulk copy jobs can be split in multiple sessions and run concurrently. 
239 SQLWays Documentation Copyright © 1999-2015 
10. Parallel queries and enhanced partitioning. When Adaptive server is configured for parallel query processing, theoptimizer evaluates each query to determinate whether it is eligible for parallel execution. If it is, the query is divided into components that process simultaneously. The results are combined and delivered to the client in a shorter period of time than it would take to process the query serially as a single component. 
Fully enabled parallel query processing requires multiple processes, engines, and partitions, resulting in increased overhead for Adaptive Server, additional CPU requirements, and increased disk I/O. 
Pont-in-time recovery. Point-in-time recovery allows recovering a database by rolling it forward to a particular time in its transaction log. 
11. Recovery fault isolation. With recovery fault isolation, a System Administrator has the option of isolating thecorrupt pages marked suspect by recovery while the rest of database is brought online and available to users. 
Prior to this release, when recovery detected corruption in a database, it would make entire database inaccessible. The database remained unavailable to users until the suspect pages has been repaired or removed from database. 
12. SQL Server Manager has been replaced by Sybase Central Sybase's common management interface and theAdaptive Server plug-in for Sybase Central. 
The Adaptive Server plug-in for Sybase central allows managing adaptive Server installations using the Sybase central graphical management tool. 
バージョン 11.0 
1. User-defined caches. Release 11.0 allows System Administrators to split the SQL Server data cache into separatenamed data caches and to bind databases or database objects to those caches. Also, System Administrators can create pools within caches that perform large I/O to disk, improving performance for many queries. 
2. Data storage changes.
•System Administrators can now configure maximum numbers of rows stored on a data page or index leaf page.This reduces lock contention and improves concurrency for frequently accessed tables.
•In Release 11.0, SQL Server provides the ability to partition heap tables. A partition is simple another term for apage chain. Partitioning a table creates multiple page chains (partitions) for the table and, therefore, multiplelast pages for insert operations.
When a transaction inserts data into a portioned table, SQL Server randomly assigns the transaction to one of the table's partitions. Concurrent inserts are less likely to block, since multiple last pages are available for inserts. 
3. Transaction log changes. There is one user log cache for each configured user connection. SQL Server uses thisuser log caches to buffer the user transaction records, which reduces the contention at the end of the transaction log. When a user log cache becomes full or another event occurs (such as transaction completes), SQL server "flushes" all log records from the user log cache to the database transaction log. 
4. Isolation level 0. SQL Server allows specify isolation level 0 for the queries in transactions along with isolationlevels 1 and 3 supported in release 10.0. Isolation level 0 prevents other transactions from changing data that has already been modified by uncommitted transaction. There other transactions are blocked from modifying data until the transaction commits. However, other transactions can still read the uncommitted data (known as dirty reads). 
バージョン 10.0 
1. SQL Server release 10.0 provides full support for cursors by implementing the new SQL commands: declarecursor, fetch, open, close, deallocate; keywords in the delete and update statements that allow updating and deleting at cursor positions; 
2. Data Definitions Enhancements.
      
•   a) Integrity constraints. In addition to the rules, triggers, defaults, and unique indexes already provided by SQL Server by allowing specify integrity constraints in the create table statement. These include: 
•unique and primary key constraints to insure unique values in a column; •Referential integrity constraints to guarantee that a primary key exists in another foreign key table; 
•Check constraints to limit the values that can be inserted into a table; •Defaults to specify default values for a column; 
•   b) Changes to Views. 
•The distinct keyword can now be used in view definition, allowing creating views that do not contain duplicate rows. 
•The with check option clause has been added to the create view statement. When a view is created with check option, all rows inserted or updated through the view must meet the view criteria. 
•Create view statements can been included in batches with other transact-SQL 
statements. 
•   c) The new create schema command allows creating several objects and grant permissions on those objects in a single statement, which can be committed or rolled back as a unit. 
•   d) Release 10.0 of SQL Server provides these new datatypes: 
•Numeric or decimal (dec) specify exact numeric values, with specified precision and scale to indicate the number of digits and number of digits to the right of the decimal point. 
•Double precision specifies an approximate numeric type. •The following changes have been made to existing datatypes: •Float now accepts an optional precision specification. •The default length for char, varchar, nchar, and nvarchar columns is 1 in create table statements, variable declarations, and parameter specifications. 
•   e) Automatic sequential values using the IDENTITY property for a column. Each table in a database can have a single IDENTITY column. This column is used to store numbers that are automatically generated by SQL Server. The value of the IDENTITY column uniquely identifies each row in a table. 
3. ANSI compatibility. SQL Server release 10.0 meets SQL89/FIPS 127-1 and SQL92 / FIPS 127-2 standards. In addition to major features such as declarative integrity constraints and cursors, which described earlier, the following changes are included in release 10.0. 
•   FIPS Flagger. For customers writing application that must conform to the ANSI standard, SQL Server provides a set fipsflagger option to flag incompatible syntax. 
•   SQLSTATE messages and codes. By default, SQL Server returns SQLSTATE values to embedded SQL applications, as required by entry level SQL92. 
•   The escape clause in the like predicate. SQL Server now supports the ANSI escape clause, which allows specifying an escape character in the like predicate to search for wildcard characters. This is an addition to Transact-SQL's use of square brackets for the same purpose. 
•   ANSI-style comments. In Transact-SQL, comments are delimited by /* */ pairs, and can be nested. Transact-SQL now also supports ANSI-style comments, which consists of any string beginning with two unspaced minus signs, a comment, and a terminating newline. This syntax conflicts with subtraction of a negative number. 
241 SQLWays Documentation Copyright © 1999-2015 
•SQL Server now provides ANSI-compliant "chained" transaction behaviors as option. In chained mode, all dataretrieval and modification commands (delete, insert, open, fetch, select, and update) implicitly begin atransaction.
•Delimited identifiers. SQL Server now supports delimited identifiers for table, view, and column names. Delimitedidentifiers are object names enclosed within double quotation marks. Using them allow avoiding certainrestrictions on object names.
•Treatment of nulls. A new set option, ansinull, determines whether or not evaluation of NULL-valued operands inSQL equality (=) or inequality (!=) comparisons and in aggregate functions is ANSI-compliant.
バージョン 4.9.1 
1. New system procedures.
•sp_syntax displays the syntax of Transact-SQL statements, system procedures, utilities, and DB-Library routines.
•New system procedures allowing users easy access to information about SQL Server. These stored proceduresare compatible with the catalog interface for the Open database connectivity (ODBC) API. The procedures are:sp_column_privileges, sp_columns, sp_databases, sp_datatype_info, sp_fkeys, sp_pkeys, sp_server_info,sp_proc_columns, sp_statistics, sp_stored_procedures, sp_table_privileges, sp_tables.
バージョン 4.9 
1. Multibyte character set feature. SQL Server now supports multibyte character sets, including EUC-JIS, SHIFT-JIS,and DEC-Kanji, for use in Asian installations. The following changes and features where introduced to provide flexible language support. 
•SQL Server support conversion among a variety character sets.
•The System Administrator can now change the default, installed sort order, or character set used by SQL Server.
•New datatypes. The national character datatypes nchar and nvarchar allow a user to define a column length ascontaining a specific number of multibyte characters.
バージョン 4.8 
1. Transact-SQL now provides the union operator. It allows combining the results of two or more queries into a singleresult set. 
2. New "Not equals" operator. The new negative comparison operator <> (not equal to) is the same as the !=operator. 
3. New datatypes. Smallmoney, smalldatetime, and real are smaller versions of money, datetime, and float,respectively. They require 4 bytes of storage, rather than the 8 bytes required by their larger counterparts. 
4. Quoted strings in column headings. Except in create table, create view, and select into statements, columnheadings now can include any characters, including blanks and SQL Server keywords, if the column heading is enclosed in quotes. 
5. Symmetric multiprocessors features. Release 4.8 of the SQL Server explicitly designed to take full advantage ofthe capabilities of symmetric multiprocessor (SMP) systems. 
       
Sybase Adaptive Server Anywhere (ASA) 
このセクションではリレーショナルデータベース管理システムである Sybase Adaptive Server Anywhere への移行について説明します。  
•   Sybase ASA のデータ型 
•   Sybase ASA の歴史 
•   Sybase ASA のバージョンの進化 
243 SQLWays Documentation Copyright © 1999-2015 
Sybase ASA のデータ型 
このサブセクションでは Sybase Adaptive Server Anywhere がサポートするデータ型について説明します。 
•char, varchar および long varchar
•bigint, int or integer, smallint および tinyint
•date, datetime, smalldatetime, time および timestamp
•money および smallmoney
•decimal および numeric
•float, double および real
•binary, long binary, varbinary および image
char, varchar および long varchar 
文字データ型は文字データを格納するのに使われます。  
char[(n)] character[(n)] 
固定長文字データ、長さは n 文字。n の値は 1 から 32767 です。254 バイトまでの文字列の格納サイズは n+1 バイトです。 それより長い文字列は多くのバイトが必要です。   マルチバイト文字を char データ型として格納することができます。  varchar[(n)] character varying[(n)] 
可変長文字データ、長さは n 文字。n の値は 1 から 32767 です。254 バイトまでの文字列の格納サイズは n+1 バイトです。 それより長い文字列は多くのバイトが必要です。 
マルチバイト文字を varchar データ型として格納することができます。
long varchar 
可変長文字データ。データ長はデータベースファイルのサイズ（現在 2 Gb）に制限されます。文字列の長さに加え補助情報の為のいくつかのバイトが必要です。  
データ定義において n が指定されなかった場合のデフォルト長は 1 です。1 以下のデータ長の設定はできません。長い文字列を含むローの場合、255文字以上のデータを格納した後、以降のデータは別に保存されます。 
245 SQLWays Documentation Copyright © 1999-2015 
bigint, int or integer, smallint および tinyint 
[unsigned] bigint 
整数 (数値全体) データ。値の範囲は符号付の bigint は -2^63 (-9223372036854775808) から 2^63 - 1 (9223372036854775807)です。 unsigned bigint は 0 から 2^64 - 1 (18446744073709551615)です。 
格納サイズは 8 バイト。データ型はデフォルトで符号付き。 
[unsigned] int [unsigned] integer 
整数 (数値全体) データ。値の範囲は符号付きの integer は -2^31 (-2147483648) から 2^31 - 1 (2147483647)。 unsigned integer は 0 から 2^32 - 1 (4294967295)です。 
格納サイズは 4 バイト。 
[unsigned] smallint 
整数 (数値全体) データ。値の範囲は符号付きの smallint は -2^15 (-32768) から 2^15 - 1 (32767)。unsigned smallint は 0 から 2^16 - 1 (65535)です。 
格納サイズは 2 バイト。 
[unsigned] tinyint 
符号なし整数 (数値全体) データ。値は 0 から 2^8 - 1 (255)です。格納サイズは 1 バイト。 
date, datetime, smalldatetime, time および timestamp 
日付および時刻を表現する日付および時刻データ型 。 
date データ型は year, month および day を格納するのに使われます。 
値の範囲は January 1, 0001 から December 31, 9999 です。格納サイズは 4 バイトです。  
TRUNCATE_DATE_VALUES オプションが OFFの場合、 date カラムは hour および minute を格納します。 
datetime smalldatetime 
これらのデータがは組込みデータ型 timestamp のエイリアスです。これらのデータ型は year, month, day, hour, minute, second および secondの小数点部を格納します。小数点部は 6 数字で格納されます。 
値の範囲は January 1, 0001 00:00:00.000000 から December 31, 9999 23:59:59.999999 です。格納サイズは 8 バイトです。  
これらのデータ型は Adaptive Server Enterpriseとの互換性の為に提供されています。 
このデータ型は hour, minute, second および secondの小数点部を格納します。小数点部は 6 数字で格納され、格納サイズは 8 バイトです。  
timestamp 
このデータ型は year, month, day, hour, minute, second および secondの小数点部を格納します。小数点部は 6 数字で格納されます。  
日付の範囲は date データ型と同様です。しかし使用可能なのは 1600-02-28 23:59:59 から 7911-01-01 00:00:00 です。もし値が範囲外なら、time 部分は不完全になります。格納サイズは 8 バイト必要です。 
247 SQLWays Documentation Copyright © 1999-2015 
money および smallmoney 
通貨データタイプは通貨または貨幣値を表現します。 これらのデータ型は Adaptive Server Enterprise のデータ型との互換性の為に提供されています。
money 
通貨データ、値範囲は -999999999999999.9999 から 999999999999999.9999です。精度は精度は10,000通貨単位です。格納サイズは 8 バイトです。 
smallmoney 
通貨データ、値範囲は -999999.9999 から 999999.9999です。精度は10,000通貨単位です。格納サイズは 4 バイトです。 
decimal および numeric 
固定の精度と桁数を持つ数値データ型。 
decimal[(p[,s])] dec[(p[,s])] 
固定の精度と桁数を持つ数値。精度を最大にする場合、有効な値は - 10^128 * 9 から 10^128 * 9 です。  
p (精度) は保持される数字の最大合計数であり、小数点の左および右側の数字両方を含みます。精度の値は 1 から精度の最大数です。精度の最大数は 128 です。デフォルトの精度は30数字です。  
s (桁数) は小数点右側に保持される数字の最大数です。桁数の値は 0 から pまでです。デフォルト値は 6です。故に 0 <= s <= p となります。最大の格納サイズは精度の値により変わります。 
numeric[(p[,s])] 
numeric および decimal データ型はあらゆる点で同一です。唯一の違いは、桁数 0 の numeric データ型は IDENTITY カラムに使用されます。  
249 SQLWays Documentation Copyright © 1999-2015 
float, double および real 
浮動小数点数値データの近似値データ型です。浮動小数点データは近似値であり、値範囲の全てのデータを正確に表現することはできません。
float[(precision)] 
浮動小数点数値。格納サイズは精度が < 25 の場合 4 バイト、精度が >= 25 の場合に 8 バイトです。精度の値の範囲と格納サイズはマシンに依存します。
精度が 1-24 のfloat データ型のカラムは float データ型として格納されます。それ以上の精度の値は double データ型として格納されます。
double 
浮動小数点数値。値の範囲は 2.22507385850721e-308 から 1.79769313486231e+308 です。格納サイズは 8 バイト。精度の値の範囲と格納サイズはマシンに依存します。
浮動小数点数値。値の範囲は 1.175495e-38 から 3.402823e+38 です。格納サイズは 4 バイト。精度の値の範囲と格納サイズはマシンに依存します。
可変長文字データ。データ長はデータベースファイルのサイズ（現在 2 Gb）に制限されます。文字列の長さに加え補助情報の為のいくつかのバイトが必要です。 
251 SQLWays Documentation Copyright © 1999-2015 
binary, long binary, varbinary および image 
バイナリデータ型。データベースで翻訳されないイメージや他の情報を格納するのに使われます。
binary[(n)] 
長さ n の固定長バイナリデータ。 n の範囲は 1 から 32767です。指定されなかった場合のデフォルト長は 1 です。  
long binary 
可変長バイナリデータ。最大サイズはデータベースファイルの最大サイズ（現在 2Gb）と同じです。  
varbinary[(n)] 
n バイトの可変長バイナリデータ。 n の範囲は 1 から 32767 です。指定されなかった場合のデフォルト長は 1 です。 
image 
可変長バイナリデータ。Adaptive Server Anywhere では long binary として実装されています。NULLの設定が可能です。 
このデータ型は Adaptive Server Enterprise との互換性のために提供されています。  
整数データ型、値は 1 または 0。デフォルトでは bit データ型のカラムはNULLにできませんが、NULLを可能とするように設定する事が可能です。 
253 SQLWays Documentation Copyright © 1999-2015 
Sybase ASA の歴史 
Sybase Adaptive Server Anywhere (ASA) はSybaseにより開発されたリレーショナルデータベース管理システムであり、マルチユーザまたはクライアントサーバ型のスタンドアロンまたはネットワークサーバとして構成されます。
デスクトップ、ワークグループ、モバイル向けに少ないリソース（通常のデータベース管理システムより少ないメモリやディスクリソースを使用）と高い拡張性を持つ様に設計されました。
Sybase Adaptive Server Anywhere は Watcom International Corporation により製造されたSQL データベースサーバ、 Watcom SQLとして生まれ、1992年に Microsoft-DOS および QNX 向けに作成されました。  
Watcom International Corporation は 1981年に設立され、カナダオンタリオ州ウォータールー大学のcomputer Systems Group の研究から生まれました。Watcom は1988年の有名な Watcom C compilerなどの多様なツールを製造しました。 
1994年に Watcom は Powersoft に買収されます。1995年に Powersoft は Sybase と合併し、最新版のWatcom SQL 5.0 は Sybase SQL Anywhereとして改名されました。 
1999年に Sybase は モバイル、デスクトップ、ワークグループ用の完全なリレーショナルデータベース管理システムである SQL Anywhere Studio version 6.0 をリリースしました。そこにはデータベースの管理、ウェブからのレポートやフォームの生成、モバイルユーザ向けのデータベース複製機能などのツール一式が補完された Adaptive Server Anywhere (SQL Anywhereと改名) リレーショナルデータベース管理システムが含まれていました。 
2000年5月に、Sybase はモバイルおよび埋め込みコンピューティング事業部を Watcom International Corporationをベースに設立した iAnywhere Solutions に移管しました。それ以降、この部門は SQL Anywhere Studio の継続開発に従事しています。
現在、ASA は DOS, PalmOS, Windows, UNIX および Novell NetWare といったハードウェアのほぼ全てで稼働します。その軽量版は携帯電話のような機器で使われています。
ASA は２つの標準をサポートしています。Transact-SQL および Watcom SQL (switching ANSI standard SQL-92)。 Transact-SQL はより高い拡張性と生産性を持つ業務用RDBMSのSybase Adaptive Server EnterpriseのSQLと互換性があります。Transact-SQLを使用することにより、既存のソフトウェアを変更せずに上位のプラットフォームへ移行する事ができます。
Sybase ASA のバージョンの進化 
バージョン 9.0.0 
1. XML support. Adaptive Server Anywhere 9.0 supports XML, including storing XML document, exporting relational data as XML, importing XML, and returning XML from queries on relational data. 
•   SQL/XML support. SQL/XML is a standard that describes using SQL in conjunction with XML. As part of its SQL/ XML support, Adaptive Server Anywhere includes an XML data type that can be used to store XML documents in the database. 
•   FOR XML clause. The SELECT statement support FOR XML clause that allows obtaining query results as an XML 
document. 
2. HTTP server in the database. Adaptive Server Anywhere database servers can presently act as web servers, making possible the running of web-based applications using only an Adaptive Server Anywhere database and a web browser. 
3. 64-bit version available. A full 64-bit version of the software is available for Windows Server 2003 on Itanium II. A deployment release is available on 64-bit Linux and HP-UX operating systems. 
4. The WITH clause allows specifying common table expressions. Common table expressions are temporary view definitions existing only within the scope of a SELECT statement. They can be recursive, or non-recursive. They also permit to perform multiple level of aggregation within a single query. 
5. Recursive union can now be performed using a common table expression of a particular form. Recursive common table expressions make possible the writing of recursive queries. These are particularly useful when querying tables representing hierarchical structures or directed graphs. Each recursive common table expression contains an initial sub-query, which is executed first, and a recursive sub-query. The reference to the view, which must appear within the FROM clause of the recursive sub-query, references the rows added to the view during the previous iteration. 
6. INTERSECT and EXCEPT operations supported. These operations compute intersection and difference between two or more result sets. They complement the UNION operation. 
7. SELECT statements can operate on stored procedure result sets. In SELECT statements, a stored procedure call can now appear at any place where a base table or view is allowed. 
8. Online analytical processing features added. 
•   ROLLUP operation. For queries with a GROUP BY clause, the ROLLUP operation adds subtotal rows into the result set. Each subtotal row provides an aggregate over a set of rows in the GROUP BY clause. 
•   The LIST function can include ordered lists. 
•   Addition aggregate functions. Functions have been added to compute sample-based and population-based deviations and variances. 
9. The CREATE INDEX statement permits an index to be created on a built-in function. This feature is a convenience method adding a new computed column to the table, and creating an index on that column. 
10. ORDER BY clause allowed in all contexts. In the earlier releases, it was not allowed for many SELECT statements in view definitions, in sub-queries, or in UNION operations to use ORDER BY clause. This restriction has presently been removed. 
11. SELECT statements can now include START AT as part of the TOP clause. START AT provides additional flexibility in queries that impose explicit limitations on the result set. 
255 SQLWays Documentation Copyright © 1999-2015 
12. Constraints can now be named. Names can be now assigned to check constraints, unique constraints, andreferential integrity constraints. 
13. Lateral derived tables permit outer references in the FROM clause. Outer references can now be made fromderived tables and from stored procedures in the FROM clause. The LATERAL keyword is used to indicate that an outer reference is being made. 
14. CREATE FUNCTION and ALTER FUNCTION now permit Transact-SQL syntax. User defined functions can now becreated in the Transact-SQL dialect that return a scalar value to the calling environment. 
15. The new function EXPRTYPE returns the data type of an expression.
バージョン 8.0.2 
1. Clustered index support. Creating a clustered index on a table causes the rows in that table to be storedapproximately in the same order as they appear in the index. 
2. Unique identifier support. Adaptive Server Anywhere supports unique identifiers (UUIDs and GUIDs). UUIDs(universally unique identifiers) and GUIDs (global unique identifiers) that allows uniquely identifying rows, even across distinct databases. 
3. Update existing rows with the ON EXISTING clause. The ON EXISTING clause of the INSERT statement can beused to update existing rows with new values, as long as the table has a primary key. 
4. New joins added. New joins added to this release include the nested loop semijoin, the nested loop anti-semijoin,the hash semijoin and the hash anti-semijoin. 
5. Hide procedure text to keep logic confidential. The logic contained in stored procedures, functions, triggers, andviews can be hidden by using the SET HIDDEN option. This allows applications and databases to be distributed without revealing the logic in stored procedures, functions, triggers, and views. 
6. SET statement can be used to assign variable values.
7. INSERT statement presently supports WITH AUTO NAME. If WITH AUTO NAME is specified in an INSERTstatement, the names of the items in the SELECT list determine the associations of values to destination columns. This is useful when the number of columns in the destination table is too large. 
8. Triggers can discriminate among the actions that caused a trigger to fire. Different actions now carried outdepending on whether the trigger was fired by an INSERT, UPDATE, or DELETE operation. This feature enables sharing logic among the different events within a single trigger, and carrying out some actions in an action-depend manner. 
バージョン 8.0.1 
1. Determine ANSI equivalency of non-ANSI statements. The REWRITE functions accept a new parameter, ANSI,which cause the function to return the ANSI equivalent of any SELECT, DELETE, or UPDATE statement. 
2. Variable assignment allowed in the UPDATE statement. The SET clause of the UPDATE statement can now be usedfor assigning a value to a variable, in addition to updating the table. This feature is compatible with Adaptive Server Enterprise. 
3. Square brackets can delimit identifiers.
4. Specify isolation level in the FROM clause. The WITH table-hint argument can be used for specifying a lockingmethod for a particular table or view for particular SELECT, UPDATE, or DELETE statement. 
バージョン 8.0.0 
1. Full outer joins are now supported.
      
2. Two forms of ANSI standard CASE statements are now supported. 
バージョン 7.0.3 
1. Database properties for padding and case sensitivity. Two new properties to determine if database uses blank padding when comparing strings (BlankPadding) or if database is case sensitive (CaseSensitive). 
バージョン 7.0.2 
1. Oracle, IBM DB2, Microsoft SQL Server, Sybase Adaptive Server Enterprise, Sybase Adaptive Server Anywhere, and Microsoft Access databases can be migrated (imported) remotely into Adaptive Server Anywhere using the new sa_migrate set of stored procedures. 
2. Truncate timestamp option for compatibility with non-Adaptive Server Anywhere databases, timestamp values can be truncated. 
バージョン 7.0.1 
1. Windows CE 3.0 support. 
バージョン 7.0.0 
1. Unloading result sets. The new UNLOAD SQL statement makes possible the unloading of query result set into a comma-delimited text file. 
2. Distributed transactions and three-tired computing. Distributed transactions include operations on more than one server in a single transaction. A transaction server controls the commit and rollback behavior of distributed transactions. 
In this release, Adaptive Server Anywhere can participate in distributed transactions coordinated by the Microsoft Distributed Transaction Coordinator (DTC). Products such as Sybase Application Server and Microsoft Transaction Server can use DTC for the coordination of transaction, so DTC support enables Adaptive Server Anywhere to participate in three-tired computing with these products. 
バージョン 6.0.3 
1. Read-only databases. Database can be designated as read-only when a database server is started. This feature makes deployment of databases on read-only media, such as CD-ROMs, more straightforward. 
バージョン 6.0.2 
1. The ODBC driver has been updated to ODBC 3.51. This version of ODBC includes support for Unicode Applications.  
バージョン 6.0.1 
1. Adaptive Server Anywhere is available for Windows CE. 
バージョン 6.0 
1. Java in the database. Adaptive Server Anywhere provides a runtime environment for Java in the database, and allows using Java classes as SQL data types. 
2. Multi-processor support and improved multitasking. 
3. SQL Anywhere Version 5 and other previous releases of the software have been able to handle multiple connections concurrently, but query processing has been carried out on only a single operation system thread. Consequently, even on multi-processor machines, only a single processor was used for query processing. 
257 SQLWays Documentation Copyright © 1999-2015 
4. The data processing engine in Adaptive Server Anywhere can now run using multiple operation-system threads,and hence can take advantage of multiple processors. By default, Adaptive Server Anywhere uses the same number of operating system threads as the machine has CPU's. 
5. Multi-processor support in Adaptive Server Anywhere enables transactions from separate connections to runsimultaneously on separate CPU's. A single connection uses a single thread, and no single requests are split among CPU's. 
6. Query optimization enhancements.
•Rewrite optimization to transform a query into a query that has a greater potential for cost-based optimization tofind the most efficient access plan.
•Carries out the following kinds of transformation for rewriting optimization:
•Subquery rewriting. In many cases subquery rewritten as joins.•Elimination of unnecessary DISTICT clauses.
•Subquery caching. There are subqueries that cannot be rewritten as joins - for example, subqueries involvingaggregate functions. In these cases, there is a trade off between evaluating the subquery each time it isreferenced (CPU time) or caching (storing) the subquery result for repeated use (memory use, and possible diskaccess).
•Adaptive Server Anywhere Version 6 carries out some caching of subqueries.
•Fractional user-supplied estimates. In those cases where the cost-based optimizer does not generate the bestaccess plan, and where query performance is important, users can supply estimates of various parts of the queryin order to prompt the optimizer.
7. Programming interface enhancements.
•New ODBC features:
•Native ODBC. Presently the ODBC driver sends commands directly to the databaseserver, without using "native" library. An ODBC driver in previous versions translated ODBC calls to a set of "native" calls, which were passed to the native interface DLL. 
•Adaptive Server Anywhere supports ODBC 3.0.
8. New SQL features.
•UNSIGNED data types. Unsigned versions of the INT and SMALLINT data types have been added. These versionscan hold only non-negative numbers, but have a large maximum value than signed version.
•New data types. A 64-bit integer data type (BIGINT) has been added, in both signed and unsigned versions.Also, a VARBINARY data type is supported.
•SELECT list enhancements. The first few rows of a query can be retrieved using the following syntax: SELECT[FIRST|TOP n] select_list.
•Derived tables. Now, queries can be used in FROM clause. This makes possible writing complex queries withoutcreating a view.
•Computed columns. The value of a computed column is an expression, usually based on other columns.
バージョン 5.5.1 
1. A new special constant, LAST USER, has been added for identifying which user was the last to change a row.
      
2. Index names must now be unique for a given table, instead for a given user ID. 
3. EXECUTE (string) is an alternative syntax for the EXECUTE IMMEDIATE statement. 
4. A new database option, FIRE_TRIGGERS, allows trigger firing to be turned off. This is relevant for SQL Server to SQL Anywhere replication. 
バージョン 5.5 
With release 5.5, Sybase SQL Anywhere can be obtained in a Standard and a Professional Edition. The Professional Edition includes additional components. In particular, the following components are included in the Professional Edition: 
•   NetImpact Dynamo Internet features; 
•   The Powersoft Infomaker reporting tool; 
1. Several database options have been added to improve compatibility with SQL Server and ISO/SQL92, while maintaining the ability to be compatible with the existing applications. 
2. The CONVERT function presently converts strings to dates and times, as well as converse. 
3. Live backup. A new option for the backup utility allows a continuous backup of the transaction log. In case of a server shutdown, this log file can be used for a rapid restart of the system. 
バージョン 5.0.3 
1. A new clause has been added to the DESCRIBE statement to retrieve column names with more than thirty characters. 
2. ALTER VIEW and ALTER TRIGGER statements make possible the replacement of an existing view or trigger definition by a new definition. 
3. Transact-SQL accepted by parser. To enhance the SQL Server compatibility, performance parameters that can be used in SELECT, UPDATE, and DELETE statements in System 11 are now accepted and discarded by SQL Anywhere. Also, the PREFETCH System 11 option is allowed, but has no effect. 
バージョン 5.0.2 
1. CREATE SCHEMA statement creates a collection of tables, views, and associated permissions for a user. 
2. FLOAT (p) data type stored as REAL or DOUBLE, depending on the value of p. 
3. More than one foreign keys per table can now be created. 
4. Column default extension. Constant expressions are now allowed as column defaults, as long as they do not reference database objects. 
5. Transact-SQL support. 
CREATE TABLE and CREATE INDEX statements now support ON segment-name clause. CREATE INDEX permits CLUSTERED and UNCLUSTERED keywords, although no clustering is performed. 
The GOTO control of flow statement is now supported. 
The system objects owned by the DBO user ID are now not unloaded by either Unload or Extraction utilities. 
6. Multiple-event triggers. A single trigger can presently be defined to handle a combination of INSERT, UPDATE, and DELETE operations on a table. 
259 SQLWays Documentation Copyright © 1999-2015 
バージョン 5.0.1 
1. Numbering scheme. Sybase SQL Anywhere uses numbers for indicating patch or maintenance-level release.Release 5.0.01 is the first maintenance-level release for Sybase SQL Anywhere 5.0. The numbering scheme replaces alphabetic scheme used for Watcom SQL patch-level releases. 
2. Release 5.0.01 is released to address some problems in the initial 5.0 release, particularly a backwards-compatibility problem. 
バージョン 5.0 
Previous releases of this product were released under the name Watcom SQL. 
With the Sybase\Powersoft merger of February 1995, Watcom became a part of Sybase, Inc. Watcom SQL is presently part of the Sybase System 11 product line, and this change is reflected in the new name of the product, SQL Anywhere. The principal dialect of SQL supported by SQL Anywhere is named Watcom-SQL. 
1. SQL Central database management tool. SQL Central is a graphical database administration tool that runs on theWindows 95 and Windows NT 3.51 operation systems. 
2. Transact-SQL compatibility. SQL Anywhere 5.0 includes a set of extensions to Watcom-SQL from the SybaseTransact-SQL dialect. This makes the development of compatible applications for SQL Anywhere and SQL Server database servers much more straightforward, and also brings new features to all SQL Anywhere users. 
3. ODBC 2.5 support. SQL Anywhere 5.0 now supports ODBC 2.5 at level 2 for the Windows 95 and Windows NToperating systems, and ODBC 2.1 for the Windows 3.x operating systems. 
4. Open Server Gateway. The Open Server Gateway allows client applications to work with both with SQL Server andSQL Anywhere database servers. 
5. Transaction log mirroring. SQL Anywhere can optionally maintain two identical transaction logs. Transaction logmirroring provides additional protection against loss of data due to disk failure. 
6. Calls to external DLLs from procedures. You can now create procedures that call external DLLs.
7. Stored procedure extensions. Stored procedures have more flexible parameter declarations (including defaultvalues and optional parameters in CALL statement), and can return status information. 
8. User-defined functions. The new CREATE FUNCTION statement of the SQL Anywhere stored procedure languagecan be used to define new functions, which can be used just like other functions. 
9. Batches. This release introduces support for batches of SQL statements. Control statements (IF, LOOP, and so on)are presently available in command file as well as in procedures and triggers. 
10. Statement level triggers. Triggers can be made to fire once after each statement, as alternative to the row-leveltriggers supported in the earlier versions. 
11. New Watcom-SQL elements. These include global variables, and new operators.
12. New built-in functions. New numeric, string, date and time, and data type conversion functions have beenadded, as well as new system functions. New functions include: 
•System functions describing database properties;
•PATINDEX for pattern matching;
13. User-defined data types. User can define own data types from the existing base data types supported by SQLAnywhere. 
      
14. Extensions to data manipulation statements. The DELETE and UPDATE statements have been extended to support criteria based on joins. 
15. System stored procedures. SQL Server provides stored procedures for carrying out database management functions. The system tables of SQL Server and SQL Anywhere are different, but several of system procedures are provided to carry out analogous actions on each. 
16. More flexible column constraints. Prior to this release, all constraints associated with a table, whether column constraints or table constraints, were held as a single table constraint. Column constraints are now held individually, which allows them to be individually deleted or replaced. 
17. Other new statements have been added: LOAD TABLE, UNLOAD TABLE, TRUNCATE TABLE, MESSAGE, EXECUTE IMMEDIATE, RETURN, and others. 
261 SQLWays Documentation Copyright © 1999-2015 
MySQLへの移行 
この章ではリレーショナルデータベース管理システムであるMySQL サーバへのデータベース移行について説明します。 
•MySQL のデータ型
•MySQL の予約語
•MySQLへのデータインポート
       
MySQL のデータ型 
このセクションではMySQLがサポートするデータ型について記述します。 
•   CHAR, NCHAR および VARCHAR 
•   BIGINT,INT, INTEGER, MEDIUMINT, SMALLINT および TINYINT 
•   DECIMAL, DEC および NUMERIC 
•   FLOAT 
•   DOUBLE, DOUBLE PRECISION および REAL 
•   DATE, TIME, DATETIME, TIMESTAMP および YEAR 
•   TINYBLOB, BLOB, MEDIUMBLOB および LONGBLOB 
•   TINYTEXT, TEXT, MEDIUMTEXT および LONGTEXT 
•   BIT および BOOL 
•   ENUM および SET 
263 SQLWays Documentation Copyright © 1999-2015 
CHAR, NCHAR および VARCHAR 
[NATIONAL]CHAR[(n)] [BINARY] 
固定長文字データ。値の範囲 n は 0 から 255 文字 (MySQL Version 3.23以前は 1 から 255 )。n が指定されなかった場合のデフォルトは 1です。  
CHAR の値が格納される場合、指定された長さに右詰で空白充填されます。CHARの値が取得される場合、空白は削除されます。BINARY キーワードは CHARの値を大文字小文字を区別しソートまたは比較するために使われます。NATIONAL CHAR (または NCHAR) は CHAR カラムがデフォルトの CHARACTER セットを使用することを定義します。これは MySQL のデフォルトです。 
カラムが CHAR(0) かつNULL許可の定義がされた場合、カラムには 1 ビットが用意され、２つの値のいずれかを取ります： NULL または "" (空文字)。 
[NATIONAL] VARCHAR(n) [BINARY] 
可変長文字列。値の範囲 n は 0 から 255 文字 (MySQL Version 4.02以前は 1 から 255)。値はデータベース上にその含まれる文字とレコード長を示す１バイトが格納されます。
値が格納される時末尾の空白文字は削除されます。
BINARY キーワードは CHARの値を大文字小文字を区別しソートまたは比較するために使われます。 
BIGINT, INT, INTEGER, MEDIUMINT, SMALLINT および TINYINT 
BIGINT [UNSIGNED] 
整数データ。符号付の値の範囲は -9223372036854775808 から 9223372036854775807。符号なしの値の範囲は 0 から 18446744073709551615です。格納サイズは 8 バイト。 
INT [UNSIGNED] 
整数データ。符号付の値の範囲は -2147483648 から 2147483647。符号なしの値の範囲は 0 から 4294967295です。格納サイズは 4 バイト。  
INTEGER [UNSIGNED] 
これは INT のシノニムです。 
MEDIUMINT [UNSIGNED] 
整数データ。符号付の値の範囲は -8388608 から 8388607。符号なしの値の範囲は 0 から 16777215。です。格納サイズは 3 バイト。 
SMALLINT [UNSIGNED] 
整数データ。符号付の値の範囲は -32768 から 32767。符号なしの値の範囲は 0 から 65535です。格納サイズは 2 バイト。 
TINYINT [UNSIGNED] 
整数データ。符号付の値の範囲は -128 から 127。符号なしの値の範囲は 0 から 255です。格納サイズは 1 バイト。  
265 SQLWays Documentation Copyright © 1999-2015 
DECIMAL, DEC および NUMERIC 
DECIMAL[(p[,s])] [UNSIGNED] 
パックされていない浮動小数点数値。DECIMAL はひとつの数字が１文字として格納されます。 
p は小数点と '-' 符号を含まない数字の合計数を指定します。MySQL Version 3.23 以前では、p 引数は小数点と符号を格納するスペースを含んでいました。
s は小数点以下の数字の数を指定します。 
DECIMAL 値の範囲の最大は DOUBLE と同じですが、実際のDECIMAL カラムのとりうる値範囲は p と s の設定に制限されます。 
p が省略された場合、デフォルトは 10 です。 
s が省略された場合、デフォルトは 0 です。この場合、小数点および小数点以下の値は無い 事を意味します。  
UNSIGNED が指定された場合、負の値は設定できません。 
DEC[(p[,s])] [UNSIGNED] 
NUMERIC[(p[,s])] [UNSIGNED] 
これらは DECIMAL のシノニムです。DEC データ型は MySQL バージョン 4.00 以降で利用可能です。 
FLOAT 
FLOAT[(p[,s])] [UNSIGNED] 
浮動小数点数値。単精度浮動小数点数値の場合、精度 p は <=24 (値の範囲は -3.402823466E+38 から -1.175494351E-38, 0, および 1.175494351E-38 から 3.402823466E+38) 。倍精度浮動小数点数値の場合、精度 p の値は 25 から 53 の間です。 
p は精度、または数字の合計の数です。s は桁数、または小数点より右の数字の数を示します。  
引数の無いFLOAT 定義は単精度浮動小数点数値を表します。MySQL バージョン 3.23 では、これが真の浮動小数点値である。初期のMySQL では FLOAT(p) は常に小数点以下は 2 桁であった。MySQL での全ての計算は倍精度で行われます。  
UNSIGNED が指定された場合、負の値は設定できません。 
267 SQLWays Documentation Copyright © 1999-2015 
DOUBLE, DOUBLE PRECISION および REAL 
DOUBLE[(p,s)] [UNSIGNED] 
通常サイズ（倍精度）浮動小数点数値。値の範囲は -1.7976931348623157E+308 から -2.2250738585072014E-308, 0, および 2.2250738585072014E- 308 から 1.7976931348623157E+308です。  
p は精度または数字の合計数です。s は桁数または小数点の右の数字の数を示します。 
引数なしのDOUBLE は倍精度浮動小数点数値を示します。 
UNSIGNED が指定された場合、負の値は設定できません。 
DOUBLE PRECISION[(p,s)] [UNSIGNED] 
REAL[(p,s)] [UNSIGNED] 
これらは DOUBLE のシノニムです。  
DATE, TIME, DATETIME, TIMESTAMP および YEAR 
日付情報 (year, month, day) を格納するDATEデータ型。値の範囲は January 1, 1000 から December 31, 9999 です。  
時刻情報 (hours, minutes, seconds) を格納するTIMEデータ型。値の範囲は -838 hours 59 minutes 59 seconds から 838 hours 59 minutes 59 seconds です。 
DATETIME 
DATETIME データ型は日付および時刻の両方を格納します (year, month, day, hours, minutes, seconds)。値の範囲は January 1, 1000 00 hours 00 minutes 00 seconds から December 31, 9999 23 hours 59 minutes 59 secondsです。  
TIMESTAMP[(p)] 
TIMESTAMP データ型は日付と時刻の情報 (year, month, day, hours, minutes, seconds)を格納します。TIMESTAMP と DATATYPE の違いは、TIMESTAMP カラムは更新または追加された時に現在の日付時刻に自動的に値が変更されるところにあります。 
値の範囲は January 1, 1970 00 hours 00 minutes 00 seconds から January 1, 2037 00 hours 00 minutes 00 seconds 
p の値は 14 (省略時), 12, 8, 6, 4 または 2 (MySQL v4.04 以前では 4 または 2 のみ可能)。 p 引数 (4 バイト長) はTIMESTAMP カラムの表示形式に影響します。p が 8 または 14 のTIMESTAMP(p) カラム数値として表示されます。その他の TIMESTAMP(p) カラムは文字列として表示されます。  YEAR[(2|4)] 
YEAR データ型は年を示す 1-バイトのデータ型です。 
2-数字 または 4-数字形式 (デフォルトは 4-数字)の年を示します。値の範囲は 4-数字形式の場合、1901 から 2155, 0000 、2-数字形式の場合、1970 から 2069 (70-69)です。 （YEAR データ型はMySQL 3.22 以前では利用できません) 
269 SQLWays Documentation Copyright © 1999-2015 
TINYBLOB, BLOB, MEDIUMBLOB および LONGBLOB 
可変長のバイナリデータを格納するバイナリラージオブジェクト。値のソートや比較は大文字小文字を意識して行われます。
TINYBLOB 
バイナリラージオブジェクトカラム、最大長は 255 (2^8 - 1) 文字。  
バイナリラージオブジェクトカラム、最大長は 65535 (2^16 - 1) 文字。  
MEDIUMBLOB 
バイナリラージオブジェクトカラム、最大長は 16777215 (2^24 - 1) 文字。 
LONGBLOB 
バイナリラージオブジェクトカラム、最大長は 4294967295 (2^32 - 1) 文字。  
TINYTEXT, TEXT, MEDIUMTEXT および LONGTEXT 
大文字小文字を意識しない可変長のテキストデータを格納する文字型ラージオブジェクト 。 
TINYTEXT 
文字型ラージオブジェクトカラム、最大長は 255 (2^8 - 1) 文字。 
文字型ラージオブジェクトカラム、最大長は 65535 (2^16 - 1) 文字。 
MEDIUMTEXT 
文字型ラージオブジェクトカラム、最大長は 16777215 (2^24 - 1) 文字。  
LONGTEXT 
文字型ラージオブジェクトカラム、最大長は 4294967295 (2^32 - 1) 文字。  
271 SQLWays Documentation Copyright © 1999-2015 
BIT および BOOL 
これらは TINYINT のシノニムです。 
ENUM および SET 
ENUM('value1','value2',...) 
テーブルの作成時にカラムの仕様で明示的に列挙された使用可能な値のリスト（'value1', 'value2', ..., NULL または 特別なエラー値 "" ）から、値が選択される文字データ。ENUM は最大 65535 の異なる値を持つことができます。 
SET('value1','value2',...) 
テーブルの作成時に指定された使用可能な値のリスト（'value1', 'value2', ...）からゼロまたは一つ以上の値を持つことができる文字データ。SET は最大 64 のメンバを持つことができます。  
273 SQLWays Documentation Copyright © 1999-2015 
MySQL の予約語 
MySQL にはバッククォート (`)で囲まないと識別子 (table または column 名など) として利用できない予約語があります。識別子を引用符で囲む方式は MySQL 3.23.6 から利用可能になりました。MySQLがANSIモードである場合、識別子をダブルクォート (")で囲むことができます。  
MySQLへ移行する場合、SQLWays は自動的に MySQL の予約語との重複を解決します。SQLWays は MySQLの予約語を単一引用符で囲みます。
MySQLの予約語は以下の通りです： 
TABLE 97. M y S Q L  の 予 約 語  
ADD ALL ALTER 
ANALYZE AND AS 
ASC AUTO_INCREMENT BDB 
BERKELEYDB BETWEEN BIGINT 
BINARY BLOB BOTH 
BTREE BY CASCADE 
CASE CHANGE CHAR 
CHARACTER CHECK COLLATE 
COLUMN COLUMNS CONSTRAINT 
CREATE CROSS CURRENT_DATE 
CURRENT_TIME CURRENT_TIMESTAMP DATABASE 
DATABASES DAY_HOUR DAY_MINUTE 
DAY_SECOND DEC DECIMAL 
DEFAULT DELAYED DELETE 
DESC DESCRIBE DISTINCT 
DISTINCTROW DIV DOUBLE 
DROP ELSE ENCLOSED 
ERRORS ESCAPED EXISTS 
EXPLAIN FALSE FIELDS 
FLOAT FOR FORCE 
FOREIGN FROM FULLTEXT 
FUNCTION GEOMETRY GRANT 
GROUP HASH HAVING 
HELP HIGH_PRIORITY HOUR_MINUTE 
HOUR_SECOND IF IGNORE 
IN INDEX INFILE 
INNER INNODB INSERT 
INT INTEGER INTERVAL 
INTO IS JOIN 
KEY KEYS KILL 
LEADING LEFT LIKE 
LIMIT LINES LOAD 
      
TABLE 97. M y S Q L  の 予 約 語   
LOCALTIME LOCALTIMESTAMP LOCK 
LONG LONGBLOB LONGTEXT 
LOW_PRIORITY MASTER_SERVER_ID MATCH 
MEDIUMBLOB MEDIUMINT MEDIUMTEXT 
MIDDLEINT MINUTE_SECOND MOD 
MRG_MYISAM NATURAL NOT 
NULL NUMERIC ON 
OPTIMIZE OPTION OPTIONALLY 
OR ORDER OUTER 
OUTFILE PRECISION PRIMARY 
PRIVILEGES PROCEDURE PURGE 
READ REAL REFERENCES 
REGEXP RENAME REPLACE 
REQUIRE RESTRICT RETURNS 
REVOKE RIGHT RLIKE 
RTREE SELECT SET 
SHOW SMALLINT SOME 
SONAME SPATIAL SQL_BIG_RESULT 
SQL_CALC_FOUND_ROW S 
SQL_SMALL_RESULT SSL 
STARTING STRAIGHT_JOIN STRIPED 
TABLE TABLES TERMINATED 
THEN TINYBLOB TINYINT 
TINYTEXT TO TRAILING 
TRUE TYPES UNION 
UNIQUE UNLOCK UNSIGNED 
UPDATE USAGE USE 
USER_RESOURCES USING VALUES 
VARBINARY VARCHAR VARCHARACTER 
VARYING WARNINGS WHEN 
WHERE WITH WRITE 
XOR YEAR_MONTH ZEROFILL 
カラムやテーブル名としてANSI SQL では許可されないがMySQLでは利用可能な語句があります： 
•   ACTION 
•   BIT 
•   DATE 
•   ENUM 
•   NO 
275 SQLWays Documentation Copyright © 1999-2015 
•TIMESTAMP
       
MySQLへのデータインポート 
LOAD DATA INFILE コマンド 
インポートステージにおいて、SQLWays は LOAD DATA INFILE コマンドを使用しテキストファイルから MySQL のテーブルへデータをロードします。  
コマンドの構文は以下の通り：  
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' 
[REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS 
[TERMINATED BY '\t'] [[OPTIONALLY] ENCLOSED BY ''] [ESCAPED BY '\\' ] 
] [LINES 
[STARTING BY ''] [TERMINATED BY '\n'] 
] [IGNORE number LINES] [(col_name,...)] 
LOAD DATA INFILE コマンドにはいくつかのオプションがあります： 
REPLACE 
MySQLにテーブルが既に存在している場合、このオプションを使うことにより、プライマリまたはユニークキーを用いて既存のローを更新、プライマリキーが存在しないローは追加を行う事ができます。  
IGNORE 
MySQLにテーブルが既に存在している場合、このオプションを使うことにより、プライマリまたはユニークキーが存在するローは更新せず、プライマリキーが存在しないローは追加を行う事ができます。  
IGNORE および REPLACE オプションはテーブルにプライマリまたはユニークキーがある場合のみ適切に働きます。   
IGNORE number LINES 
このオプションはテキストファイルの先頭からいくつローをスキップするかを指定します。  
277 SQLWays Documentation Copyright © 1999-2015 
Pervasive.SQLへの移行 
この章ではリレーショナルデータベース管理システムであるPervasive.SQL サーバへの移行について説明します。 
Pervasive.SQL のデータ型 
このセクションでは Pervasive.SQL がサポートするデータ型について記述します。  
•   CHAR および VARCHAR 
•   BIGINT, UBIGINT, INTEGER, UINTEGER, SMALLINT, USMALLINT, TINYINT および UTINYINT 
•   DATE, TIME および TIMESTAMP 
•   DECIMAL, NUMERIC, NUMERICSA および NUMERICSTS 
•   MONEY および CURRENCY 
•   FLOAT, REAL, DOUBLE, BFLOAT4 および BFLOAT8 
•   LONGVARCHAR 
•   BINARY および LONGVARBINARY 
•   BIT, IDENTITY および SMALLIDENTITY 
279 SQLWays Documentation Copyright © 1999-2015 
CHAR および VARCHAR 
CHAR(n) 
固定長文字データ、長さはn 文字。n の範囲は 1 から 255。CHAR カラムは空白充填されます。CHAR 型カラムのサイズを指定する必要があります。
VARCHAR(n) 
可変長文字データ、長さは n 文字。n の値は 1 から 254です。 VARCHAR カラムは空白充填されません。VARCHAR 型カラムのサイズを指定する必要があります。
       
BIGINT, UBIGINT, INTEGER, UINTEGER, SMALLINT, USMALLINT, TINYINT および UTINYINT 
BIGINT 
整数 (数値全体) データ、値範囲は -2^63 (-9223372036854775808) から 2^63-1 (9223372036854775807)。格納サイズは 8 バイト。  
UBIGINT 
符号なし整数 (数値全体) データ、値範囲は 0 から 18446744073709551615。格納サイズは 8 バイト。  
INTEGER 
整数 (数値全体) データ、値範囲は -2^31 (-2,147,483,648) から 2^31 - 1 (2,147,483,647)。格納サイズは 4 バイト。  
UINTEGER 
符号なし整数 (数値全体) データ、値範囲は 0 から 2^32 (4294967295)。格納サイズは 4 バイト。 
SMALLINT 
整数データ、値範囲は -2^15 (-32,768) から 2^15 - 1 (32,767)。格納サイズは 2 バイト。 
USMALLINT 
符号なし整数データ、値範囲は 0 から 2^16 (65535)。格納サイズは 2 バイト。  
TINYINT 
整数データ、値範囲は -2^7 (-128) から 2^7 - 1 (127)。格納サイズは 1 バイト。  
UTINYINT 
符号なし整数 (数値全体) データ、値範囲は 0 から 255。格納サイズは 1 バイト。 
281 SQLWays Documentation Copyright © 1999-2015 
DATE, TIME および TIMESTAMP 
日付と時刻を表現する Date および Time データ型 
DATE データ型は日付情報 (year, month, day) を格納、値範囲は 01-01-0001 から December 31, 9999。DATE データ型は内部で 4-バイトの値として格納されます。 
TIME データ型は時刻情報 (hour, minute, second および hundreds of a seconds) を格納、値範囲は 00:00:00 から 23:59:59です。  
TIME データ型は内部で 4-バイトの値として格納されます。 
TIMESTAMP 
TIMESTAMP データ型は日付と時刻の情報 (year, month, day, hour, minute, second および 小数点以下の秒)を格納、値範囲は 0001-01-01 00:00:00.0000000 から 9999-12-31 23:59:59.9999999 UTCです。  
TIMESTAMP データ型は内部で 8-バイトの符号なし値であり、グレゴリアン歴のJanuary 1, 0001からの経過時間をセプタ秒(10^-7 second)で表現した協定世界時刻 (UTC)です。 
       
DECIMAL, NUMERIC, NUMERICSA および NUMERICSTS 
固定の精度と桁数を持つ数値データ型 
DECIMAL(p,s) 
p (精度) は小数点の左右両方の数字の数を合計した最大数を示します。精度の値は 1 から 64です。   s (桁数) は小数点の右側の数字の数の最大を示します。桁数の値は 0 から pです。   精度および桁数の値は必須指定です。   DECIMAL データ型は内部的に１バイトに２つの数字がパックされた形式で格納されます。  NUMERIC(p,s) 
NUMERIC データ型は DECIMAL と同様です。最大の精度の値は 15 です。   NUMERIC 値は ASCII 文字列として格納され、右詰で０充填されます。各数字は内部で１バイトを占めます。埋め込みの符号は EBCDIC の値です。  
NUMERICSA(p,s) 
NUMERICSA データ型 (NUMERIC SIGNED ASCII とも呼ばれる) は COBOL データ型であり、NUMERIC データ型と同様です。但し、埋め込みの符号は EBCDIC でなく ASCII 値です。   最大精度は 15 です。  
NUMERICSTS(p,s) 
NUMERICSTS データ型 (SIGN TRAILING SEPARATE とも呼ばれる) は COBOL データ型であり、NUMERIC データ型と同様です。但し、符号は別のバイトに格納されます。   最大精度は 14 です。  
283 SQLWays Documentation Copyright © 1999-2015 
MONEY および CURRENCY 
MONEY 
MONEY データ型は 小数点２桁のDECIMAL データ型と同じ内部表現です。  
MONEY は古いデータ型であり、Pervasive Software はMONEY の代わりに DECIMAL データ型の使用を推奨しています。 
CURRENCY 
CURRENCY データ型は小数点４桁で通貨の小数点部を表現するデータ型です。 
FLOAT, REAL, DOUBLE, BFLOAT4 および BFLOAT8 
FLOAT 
FLOAT データ型はIEEE 標準単精度および倍精度の実数値です。  
REAL データ型は 4-バイトの FLOAT として定義されます。  
DOUBLE 
DOUBLE データ型は 8-バイトの FLOAT として定義されます 。 
BFLOAT4 
BFLOAT4 データ型は単精度の実数値です。   BFLOAT4 型は一般的に古い BASIC アプリケーションで使用されます。Microsoft はこのデータ型を MBF (Microsoft Binary Format) と呼び、Visual Basic 環境ではもはや サポートされません。Pervasive Software は BFLOAT4 の代わりに REAL データ型の使用を推奨しています。 
BFLOAT8 
BFLOAT8 データ型は倍精度の実数です。   BFLOAT8 型は一般的に古い BASIC アプリケーションで使用されます。Microsoft はこのデータ型を MBF (Microsoft Binary Format) と呼び、Visual Basic 環境ではもはや サポートされません。Pervasive Software は BFLOAT4 の代わりに DOUBLE データ型の使用を推奨しています。  
285 SQLWays Documentation Copyright © 1999-2015 
LONGVARCHAR 
LONGVARCHAR 
可変長の文字データであり、最大長は 2^31 - 1 (2,147,483,647) 文字です。格納サイズは実際に入力されたデータ長 + 8-バイトのヘッダです。
BINARY および LONGVARBINARY 
バイナリデータ型 
BINARY(n) 
固定長のバイナリデータ、長さは n バイト。n の値は 1 から 255です。BINARY カラムはバイナリのゼロで充填されます。BINARY カラムのサイズを指定する必要があります。 
LONGVARBINARY 
可変長のバイナリデータ、長さは 0 から 2^31-1 (2,147,483,647) バイト。格納サイズは実際に入力されたデータと + 8-バイトのヘッダになります。  
287 SQLWays Documentation Copyright © 1999-2015 
BIT, IDENTITY および SMALLIDENTITY 
1 または 0 の値を持つ整数データ型。 0 または 1 以外の整数値の設定も可能ですが常に 1 に変換されます。BIT データ型のカラムには NULL を設定できません。 
いくつかの BIT カラムが続けて定義されている場合には一つのバイトに格納されます。それ以外の場合は各BITカラムは１バイトに格納されます。
IDENTITY 
IDENTITY データ型は符号付の 4-バイト INTEGERとして格納されます。 IDENTITY はテーブルにカラムが追加される度に増分された値が自動的に設定されます。
IDENTITYカラムにASCIIのゼロが入ったレコードのINSERT 操作が行われた場合、データベースエンジンは現在の最大値を増分した値を割り当てます。
SMALLIDENTITY 
SMALLIDENTITY データ型は IDENTITY データ型と同じです。但し、SMALLIDENTITYを格納するのには符号付 2-バイトの整数 (SMALLINT) が使用されます。 
       
この章はテーブルの処理に関する様々な事柄と各データベースの実装の差異について記述しています。  
•   カラムのデフォルト値 
•   テーブルのドロップ 
•   テーブルのインポート 
289 SQLWays Documentation Copyright © 1999-2015 
カラムのデフォルト値 
このセクションでは、様々なデータベースでのDEFAULTオプションの使用とSQLWaysによる変換について記述します。 
DEFAULT は INSERT ステートメントでカラムの値が省略された時にカラムにデフォルトの値を割り当てるために使用されます。 
TABLE 98. カ ラ ム の デ フ ォ ル ト 値  
データベース構文説明
MySQL DEFAULT 式 DEFAULT はMySQLのカラムにデフォルト値を指定するのに使用されます。
式には定数を含むことが可能
Microsoft SQL Server
DEFAULT 式 DEFAULT は Microsoft SQL Server のカラムにデフォルト値を指定するのに使用されます 。
式には定数、組込み関数、または算術表現を含むことが可能
Oracle DEFAULT 式 DEFAULT は Oracle のカラムにデフォルト値を指定するのに使用されます 。
式には定数、リテラル引数やカラムへの参照、ネスト関数呼び出しを行うような関数以外のあらゆるSQL関数を含むことが可能 
制約： 式にはPL/SQL関数や他のカラムへの参照、完全に指定されていない日付定数やLEVEL, CURRVAL, NEXTVAL, および ROWNUM などの疑似カラムを含む事はできません
IBM DB2 DEFAULT式 DEFAULT は DB2 のカラムにデフォルト値を指定するのに使用されます 。 
式には定数、CURRENT DATE, CURRENT TIME または CURRENT TIMESTAMP のような特殊レジスター、CURRENT SCHEMA, USER およびキャスト関数を含むことができます
制約： 式には DATALINK 型、タイプ付き表のオブジェクト識別子、ユーザ定義構造タイプのデータを含むことはできません
       
DEFAULT 構文を MySQLへ変換 
MySQL では DEFAULT 値に指定できるのは定数のみです。他のデータベース（Oracle、DB2など）では、CURRENT_DATE のような式をDEFAULTに指定することができます。もしDEFAULTの値が定数の文字列や数値でない場合、SQLWaysはMySQLへの変換において、デフォルトオプションを削除します 
唯一の例外は、ソースデータベースのカラムが日付時刻データ型であり、現在のシステム日付と時刻をデフォルト値として持つものです。この場合、SQLWaysはデフォルト属性を削除し、データ型をMySQLのTIMESTAMPデータ型に変換します。MySQLのTIMESTAMPデータ型は現在のシステム日付時刻をデフォルトとして持ちます： 
TABLE 99. DEFAULT 構文を MySQLへ変換 
SQL Server MySQL 
CREATE TABLE table_name1 ( col1 datetime default GETDATE() ) 
CREATE TABLE table_name1 ( col1 TIMESTAMP ); 
291 SQLWays Documentation Copyright © 1999-2015 
DEFAULT 値をIBM DB2 からOracleへ変換 
Oracle では DEFAULT '' は NULL と解釈されます。対して IBM DB2 では空の文字列として解釈されます。Oracle で空の文字列をデフォルトに設定するには、DEFAULT ' ' (単一引用符で囲まれた空白一文字) と指定します。  
SQLWays はIBM DB2の DEFAULT '' を Oracle の DEFAULT ' ' に変換します： 
TABLE 100. DEFAULT 値を IBM DB2 からOracleへ変換 
IBM DB2Oracle
CREATE TABLE table_name1 ( col1 varchar(10) default ‘’ )
CREATE TABLE table_name1 ( col1 varchar2(10) default ‘ );
テーブルのドロップ 
DROP TABLE ステートメントはテーブルをドロップするのに使われます。以下のステートメントは全ての BOOKS テーブルをドロップします： 
DROP TABLE books 
ドロップ対象のテーブルが外部キー制約で参照されているかも知れません。  
•  IBM DB2 Universal Database は外部キー制約で参照されているテーブルをドロップします 
•  Oracle は DROP TABLE ステートメントにCASCADE CONSTRAINTS オプションを指定しないと外部キーとしてい参照されているテーブルのドロップは許可しません 
CASCADE CONSTRAINTS オプションは 子テーブルの外部キー制約をドロップします。例えば： DROP TABLE books CASCADE CONSTRAINTS 
•   Microsoft SQL Server および Sybase Adaptive Server では参照されているテーブルのドロップは許可されません。初めに参照しているテーブルの 外部キー制約を削除する必要があります   Oracle の CASCADE CONSTRAINTS オプションを生成するには  •   SQLWays ウィザード - DDL オプションページ 
•   SQLWays コマンドライン - [DDL] サブセクション 
293 SQLWays Documentation Copyright © 1999-2015 
テーブルのインポート 
この章ではSQLWaysによるターゲットデータベースへのテーブルのインポートについて説明します。 
データベースに既に存在するテーブルのインポート
インポートしようとするテーブルが既にターゲットデータベースに存在する場合があります。例えば、テーブルが他のツールで生成され、SQLWaysではデータのみをインポートする場合。または移行作業を何回か繰り返しており、最初の作業で全てのテーブルがターゲットデータベースに存在する場合。
このような場合、再度インポートする前にテーブルをドロップしたいかもしれません。
SQLWays は DROP TABLE ステートメントをそれぞれの CREATE TABLE ステートメントの前に生成するオプションがあります。このオプションによりテーブルを再作成する前にドロップすることができます。
DROP TABLE ステートメントを生成するには 
•SQLWays ウィザード - DDL オプションページ
•SQLWays コマンドライン - [DDL] サブセクション
幾つかのデータベースでは DROP TABLE ステートメントを実行してもテーブルが消えないという問題が発生するかもしれません。詳しくは テーブルのドロップ を参照。
アプリケーション移行のコンセプト 
ここではSQLWaysを使用して行われる移行プロセスのコンセプトを説明します。 
•   Progress 4GL から C# .NET への移行 
•   PowerBuilder の移行 
•   Oracle PL/SQL から Java への移行 
295 SQLWays Documentation Copyright © 1999-2015 
Progress 4GL から C# .NET への移行
•4GL および ABL アプリケーションファイル
•.p および .w ファイルを C#.NET の .cs ファイルに変換
•.i インクルードファイルを C# のコードに変換
•4GL および ABL トリガ
•4GL データベーストリガプロシージャをデータベーストリガ (SQL Server は T/SQL トリガ、Oracle はPL/SQL トリガ) に変換 
PowerBuilder の移行 
SQLWays は PowerBuilder アプリケーションのSQLステートメント、およびテーブルやカラム名を新しいデータベースプラットフォームの構文や仕様に合わせて自動的に変換します。 
•   課題 
データベース移行プロジェクトにおいて、PowerBuilder アプリケーションの変換の必要性はしばしば軽視されがちです。PowerBuilder アプリケーションの使用を継続する (Javaや.NET などに移行しない) 場合でも、アプリケーションの移行はプロジェクトの 30-50% のコストを占めます。   多くの場合、PowerBuilderアプリケーションのSQLステートメントは、Sybase, Oracle, Informix, SQL Server, PostgreSQL, MySQLなどの各データベースのネイティブな構文で記述されています。   PowerBuilder のグラフィカル機能を使用してデータソースの定義 (PBSELECT) を行った場合でも、しばしばアプリケーションコード全体に渡りテーブルやカラム名の修正が必要となります。   大幅なデータベーススキーマの変更（名前変更、削除、カラムやテーブルの変更など）を行うデータベース移行プロジェクトでは、スキーマ変更はPowerBuilder アプリケーションにも影響が及びます。  
•   変換機能 
• 主要なデータベースをサポート - Oracle, SQL Server, DB2, Sybase, Informix, MySQL, PostgreSQL 等  
• アセスメントツールの提供 
• PowerBuilder のソースファイル (.PBL ライブラリから抽出) を検査し、SQL ステートメントとデータベースアクセスコードを変換  
• DataWindow オブジェクト (.SRD ファイル) および Query (.SRQ ファイル) の SQL SELECT および PowerBuilder PBSELECT ステートメントを変換 
• Window オブジェクト (.SRW ファイル), User オブジェクト (.SRU ファイル) および Function オブジェクト (.SRF ファイル) の SQL SELECT, INSERT, UPDATE および DELETE ステートメントを変換 
• プロシージャコールのサポート 
• SQL 組込み関数の変換 
• 結果セットの処理をサポート  
• DECLARE PROCEDURE FOR および ALIAS FOR ステートメントの変換 
• 動的 SQL の変換をサポート 
• テーブルやカラムのマッピング
297 SQLWays Documentation Copyright © 1999-2015 
Oracle PL/SQL から Java への移行 
SQLWays は Oracle PL/SQL を Java クラスへの変換を行う事ができます。 
• PL/SQL パッケージを 99% のビジネスロジックを保持し Java クラスへ変換
• カーソルを Java の結果セットに変換
• Out パラメータを Java のインナークラスに変換
• DML を Java の埋め込み SQL に変換
       
ユーザーズガイド 
ここではSQLWaysの使い方を説明しています。移行プロセスの背後にあるコンセプトを理解するには データベース移行のコンセプトを参照してください。  
SQLWaysはウィザードによる支援またはコマンドラインツールとして使うことができます。ウィザードは直観的で使いやすいインターフェイスを持ち、ステップバイステップの形式で移行作業を容易に実行することができます。SQLWaysのコマンドライン版は移行作業を自動化するのに役立ちます。 
•   SQLWays ウィザード 
•   SQLWays コマンドライン 
•   ODBC データソースのセットアップ 
299 SQLWays Documentation Copyright © 1999-2015 
SQLWays ウィザード
この章はSQLWays ウィザードが移行プロセスをどのようにガイドしてゆくのかについて説明します。SQLWays ウィザードを使うことにより、ユーザーはステップバイステップ方式でいくつかのダイアログボックスに入力を行うだけで移行プロセスの設定や構成を容易に行う事ができます。
ページを下にたどることで移行プロセスの個別ステップのリンクを参照する事ができます：
•“ウェルカムページ”このページはSQLWays ウィザードのイントロダクションであり、SQLWaysをオンラインで注文しラインセンスキーを入手する事ができます。
•Step 1 - “ソースデータベースの選択”ソースのデータベースを選択し、ソースデータベースへ接続する為のユーザ名およびパスワードを指定します。
•Step 2 - “ターゲットデータベースの選択”ターゲットデータベースを選択し、接続のためのユーザ名とパスワードを指定します。
•Step 3 - "データベースオブジェクトやクエリを指定”ソースデータベースからターゲットデータベースへ移行するデータベースオブジェクト（テーブル、ビューなど）を選択します。
•Step 4 - "DDL および Data オプションの指定"エクスポート段階での SQL スクリプトやデータファイルの生成オプションを指定します。
•Step 5 - "エクスポートファイルのオプション指定"エクスポートファイルの生成場所などのオプションを指定します。
•Step 6 - "インポートオプションの指定"インポートステージのオプションを指定します。
上記の 6 つのステップが正常に実行できれば、選択した条件を再度レビューし移行作業を開始することができます。 
       
ウェルカムページ 
このページはSQLWays ウィザードのイントロダクションであり、SQLWaysをオンラインで注文しラインセンスキーを入手する事ができます。  
•  ライセンスキーを登録するまで、製品を 評価版として使用することができます。この場合、SQLWaysの使用に一定の制限があります。詳しくは SQLWays 使用許諾書を参照してください 
•   これらの制限を解除するには SQLWays のライセンスを登録してください 
•ライセンスの入手は オンラインで注文をクリックするか、 http://www.ispirer.com/order/ にアクセスしてください。  •Enter License をクリックし、License Information ダイアログボックスにあなたの Registration Name および取得したRegistration Numberを入力してください 
ライセンス登録後、ページの下部にあるDo not show this Welcome page again チェックボックスを選択することで、SQLWays Wizardを再起動した後にウェルカムページの表示をスキップする事ができます。 
301 SQLWays Documentation Copyright © 1999-2015 
Step 1- ソースデータベースの選択 
このページでは、ソースのデータベースを選択し、ソースデータベースへ接続する為のユーザ名およびパスワードを指定します。
•User/System DSN がクリックされた場合、ODBC データソースボックスの中からソースデータベースの名前を選択します。新しいODBCデータソースを作成するには、Newをクリックし、データソースとして作成したいデータベースの名前、タイプ、および ODBC ドライバを選択します。
•File DSN をクリックした場合には、ソースデータベースへのODBC接続情報が格納されたファイルのパスを入力します。 (...)をクリックし、*.dsn ファイルを参照する事ができます。
•User name および Password のボックスで、ソースデータベースへのログイン情報を入力します。Save password チェックボックスをクリックして今後パスワードの入力を省略することもできます。
•ODBC データソースのセットアップ
Step 2- ターゲットデータベースの選択
このページでは、ターゲットのデータベースを選択し、接続のためのユーザ名とパスワードを指定する事ができます。 
•   Target ボックスでは、 サポートデータベース の一覧の中からターゲットデータベースを選択します 
Version ボックスでは、そのバージョンを入力します。 
•   選択したターゲットデータベースに対応した接続オプションを入力し、また Advanced をクリックし必要な追加設定を行います 
TABLE 101. タ ー ゲ ッ ト デ ー タ ベ ー ス オ プ シ ョ ン  
ターゲットデータベース 接続オプション Advanced オプション 
IBM DB2 •   database IBM DB2 Advanced オプション 
Oracle •   service Oracle Advanced オプション 
Microsoft SQL Server •   server 
•   database 
Microsoft SQL Server Advanced オプション 
Sybase •   server 
•   database 
Sybase Adaptive Server Enterprise Advanced オプション 
MySQL •   host 
•   database 
MySQL Advanced オプション 
Pervasive.SQL •   ODBC alias Pervasive.SQL Advanced オプション 
•   User name および Password ボックスでは、 ターゲットデータベースへのログイン情報を入力します。Save password チェックボックスをクリックして後のパスワード入力を省略する事ができます 
ターゲットデータベースが Microsoft SQL Server の場合、Use Windows authentication チェックボックスをクリックし、Microsoft SQL Server への接続にOSの認証を使用することができます。この場合、User name および Password ボックスにログイン情報を入力する必要はありません。 
•   Generate import scripts チェックボックスが選択された場合、SQLWays はデータおよびデータベース構造をターゲットデータベースへインポートするスクリプトを生成します 
303 SQLWays Documentation Copyright © 1999-2015 
IBM DB2 Advanced オプション 
このダイアログボックスでは IBM DB2 (Linux, Unix および Windows; z/OS および OS/390; iSeries および AS/400) をターゲットデータベースとする場合のアドバンストオプションを設定します。指定可能なオプションは以下の通り：
•BIN directory ボックスでは、CLP, IMPORT, LOAD といったIBM DB2 ユーティリティが存在するフォルダへのパスを指定します。 (...) をクリックしフォルダを参照することができます
•Utilities options ボックスの Use the IMPORT command はデフォルトでチェックされており、IBMDB2 データベースへデータがインポートされる設定となっています
•Mode ボックスでは、IMPORT ユーティリティが実行するモードを選択します。選択可能なモードは INSERT (ターゲットテーブルの既存データを変更せずデータを追加)、INSERT_UPDATE (ターゲットテーブルへデータを追加、プライマリキーが一致する既存データは更新を行う）および REPLACE (ターゲットテーブルのtruncateにより既存データを削除し、インポート対象データを追加。テーブルおよびインデクス定義は変更しない)。デフォルトのモードは INSERT です 
•Utilities options ボックスの Use the LOAD command がチェックされた場合、 IBM DB2 データベースへデータがロードされます
•Mode ボックスでは、LOAD ユーティリティが実行するモードを選択します。選択可能なモードは INSERT (ターゲットテーブルの既存データを変更せずデータを追加) および REPLACE (ターゲットテーブルの既存データをすべて削除し、ロード対象データを追加。テーブルおよびインデクス定義は変更しない)。デフォルトのモードは INSERTです 
•Load from a remote client チェックボックスが選択された場合、データはリモートクライアント上に存在します。デフォルトでは Load from a remote client チェックボックスはクリアされており、データはIBM DB2 サーバ上に存在します。LOAD コマンドの CLIENT オプションは IBM DB2 7.1 以降で有効です
•Nonrecoverable load チェックボックスが選択された場合、ロードトランザクションを回復不能としてマークし、それ以降にロールフォワードを実行しても回復できなくなるように指定します。このオプションを指定すると、テーブルスペースはロード操作後にバックアップ保留状態になりません。デフォルトではNonrecoverable load チェックボックスはクリアされています
•Modified by ボックスでは、IBM DB2 IMPORT および LOAD ユーティリティのオプションへの追加オプションを指定します。SQLWaysは、文字やカラム区切りなどのオプションを IBM DB2 IMPORT/LOAD スクリプトに追加します。modified by option として他のオプションを指定したい場合にこのオプションを使用します。例えば、modifiedby_options=usedefaults delprioritychar を設定すると、IBM DB2 IMPORT/LOAD ユーティリティ向けの各スクリプトにこれらのオプションが追加されます
•Tablespaces ボックス：
•Tables ボックスでは、テーブルが作成されるテーブルスペース名を入力します。指定するテーブルスペースは、存在する REGULAR テーブルスペースでなければなりません。他のテーブルスペースが指定されなければ全てのテーブルオブジェクトはこのテーブルスペースに格納さえｒます。デフォルトのテーブルスペースは USERSPACE1 です 
• Index ボックスでは、テーブルのインデクスが作成されるテーブルスペースを指定します。指定するテーブルスペースは、存在する REGULAR DMS テーブルスペースでなければなりません 
• Large objects ボックスでは、ロングカラムの値 (LONG VARCHAR, LONG VARGRAPHIC, LOB データ型) が格納
されるテーブルスペースを指定します。指定するテーブルスペースは、存在する LONG DMS テーブルスペースでなければなりません
      
•   Timestamp format ボックスでは、ターゲットデータベースが IBM DB2 であるテキストファイルの中のタイムスタンプデータ型カラムのフォーマットを選択します。選択可能な形式は IBM DB2, ISO です。デフォルト値は IBM DB2 であり、タイムスタンプのIBM DB2 ネイティブフォーマットです。IBM DB2 ネイティブフォーマットは YYYY-MM-DD-HH.MI.SS.FFFFFF です。 IBM DB2 の IMPORT コマンドが二重引用符で囲まれないタイムスタンプ値（タブ区切り形式など）をインポートする場合にはこの形式でなければなりません。 もし ISO が指定された場合、 ISO 形式のタイムスタンプが使用されます。 ISO 形式は YYYY-MM-DD HH:MI:SS.FFFFFF です。IBM DB2 の IMPORT コマンドは、ISO 形式のタイムスタンプ値を二重引用符で囲む（CSV 出力形式など）ことでインポートする事ができます。 注： このオプションは DATETIME_FORMAT オプション([DATA] サブセクションを参照) に値が設定された場合は無視されます。 例えば、DATETIME_DATATYPE=DATE が指定された場合、datetime データ型は IBM DB2 の DATE 型に変換されます 
コマンドラインで IBM DB2 オプションを指定するには： 
•   SQLWays コマンドライン - [IBM DB2] サブセクション 
305 SQLWays Documentation Copyright © 1999-2015 
Oracle Advanced オプション 
このダイアログボックスではOracle がターゲットデータベースの場合のアドバンストオプションを設定します。設定可能なオプションは以下の通りです：
•BIN directory ボックスでは、 SQL Plus や SQL Loader といった Oracle ユーティリティが存在するフォルダへのパスを指定します。 (...) をクリックしフォルダんを参照する事ができます
•SQL Loader ボックス：
• Executable ボックスでは、Oracle SQL Loader の実行モジュール名を入力します。デフォルトの名前はsqlldr.exe です
• Data option ボックスでは、 生成された SQL Loader 制御ファイルによるロードオプションを選択します。選択可能な値は Insert, Append, Replace, Truncate です。デフォルトのオプションは Insert です 
• Use direct path load チェックボックスが選択された場合、ダイレクトパスロードを指定します。デフォルトではUse direct path load チェックボックスはクリアされており、対話型のパスロードが指定されています 
• Use DECODE for empty CHARs チェックボックスが選択された場合、SQLWays SQL Loader の制御ファイルにDECODE 関数を生成し、固定長テキストファイルの CHAR NOT NULL カラムへの NULLデータを空白に変換します。もしテキストファイルが固定長フォーマットで、空白のフィールドを CHAR NOT NULL カラムにロードする場合には、SQL Loader は空白をNULLとして扱うため、DECODE 関数を使用しなければなりません 
•SQL Plus ボックス：
• Executable ボックスでは、 Oracle SQL Plus の実行モジュールを指定します。デフォルトの名前は sqlplus.exeです
•SQL Loader column formats ボックスでは、Oracle の日付時刻データ型を表現するデータ型を指定します。日付時刻型データは有効な日付と時刻データの組わせで構成されます。各種データベースにより、Oracle では DATE型、IBM DB2 では TIMESTAMP型、Microsoft SQL Server や Sybase では DATETIME 型となります。SQLWays は日付時刻データ型を指定されたデータ型に変換します。デフォルトの値は DATE 型です。例えば、TIMESTAMP(6) が指定された場合、日付時刻型は Oracle の TIMESTAMP(6) に変換されます。TIMESTAMP は Oracle 9i R1 (9.0.1) 以降で利用可能です 
• DATE ボックスでは、テキストファイルの日付（year, month, day) データを DATE カラムにロードするためのSQLLoader 制御ファイルのフォーマット文字列を指定します。デフォルトのフォーマットは "YYYY-MM-DD" です。もし [Data] サブセクション の DATE_FORMAT オプションが指定されている場合はこのDATEオプションの設定は上書きされます 
• TIME ボックスでは、テキストファイルの時刻（hours, munutes, seconds) データを DATE カラムにロードするためのSQL Loader 制御ファイルのフォーマット文字列を指定します。デフォルトのフォーマットは "HH24:MI:SS" です。 もし [Data] サブセクションの TIME_FORMAT オプションが設定されている場合はこのTIMEオプションの設定は上書きされます
• TIMESTAMP ボックスでは、 テキストファイルのタイムスタンプ（year, month, day, hours, munutes, seconds)データを DATE カラムにロードするためのSQL Loader 制御ファイルのフォーマット文字列を指定します。デフォルトのフォーマットは "YYYY-MM-DD HH24:MI:SS" です。 もし [Data] サブセクションの DATETIME_FORMAT オプションが設定されている場合はこのTIMESTAMPオプションの設定は上書きされます 
• TIMESTAMP9i ボックスでは、テキストファイルの Oracle9i タイムスタンプ（year, month, day, hours,munutes, seconds, 秒の小数点部) データを ロードするためのSQL Loader 制御ファイルのフォーマット文字列を指定します。デフォルトのフォーマットは "YYYY-MM-DD HH24:MI:SS.FF" です 
      
•   デフォルトでは Generate the EXIT command チェックボックスは選択されており、SQL Plus EXIT コマンドが DDL スクリプトの末尾に生成されます。これにより複数のDDL スクリプトをバッチモードで実行する事が可能になります 
•   デフォルトでは Use the TO_DATE function チェックボックスが選択されており、対応する日付型の TO_DATE 関数がSQL Plus 用の INSERT ステートメントの DATE 型カラムに設定されます。これにより日付フォーマットがデフォルトの形式と異なるDATE型カラムへデータを追加する事が出来ます。もし Use the TO_DATE function チェックボックスがクリアされた場合、TO_DATE 関数は SQL INSERT ステートメントに生成されません 
コマンドラインで Oracle のオプションを指定するには：  
•   SQLWays コマンドライン - [Oracle] サブセクション 
307 SQLWays Documentation Copyright © 1999-2015 
Microsoft SQL Server Advanced オプション 
このダイアログボックスでは Microsoft SQL Server がターゲットデータベースの場合のアドバンストオプションを指定します。指定可能なオプションは以下の通りです：
•BIN directory ボックスでは、BCP や ISQL といった Microsoft SQL Server のユーティリティが存在するフォルダへのパスを指定します。 (...) をクリックしてフォルダを参照する事ができます 
•Max errors ボックスでは、BCP ユーティリティが中断するまでの最大エラー数を指定します。 BCP がコピーできなかった各ロー毎のエラーは無視され、ひとつのエラーとして報告されます (BCPのパラメータ -m )。デフォルト値は 10 です 
•Codepage ボックスでは、BCP ユーティリティに対してデータファイルのコードページを指定します。 (BCPのパラメータ -C )。 以下のようなコードページを指定： 
• ACP - ANSI/Microsoft Windows (ISO 1252).• OEM - クライアントのデフォルトコードページ。BCP -C が指定されなかった場合のデフォルトです
• RAW - コードページの変換を行わない
• <value> - コードページ番号を指定。例 437
コマンドラインで Microsoft SQL Server のオプションを指定するには： 
•SQLWays コマンドライン - [Microsoft SQL Server] サブセクション
       
Sybase Adaptive Server Enterprise Advanced オプション 
このダイアログボックスでは Sybase Adaptive Server Enterprise がターゲットデータベースの場合のアドバンストオプションを指定します。指定可能なオプションは以下の通り：  
•   BIN directory ボックスでは、BCP や ISQL といった Sybase ユーティリティの存在するフォルダへのパスを指定します。 (...) をクリックしてフォルダを参照する事ができます 
コマンドラインで Sybase Adaptive Server Enterprise のオプションを指定するには： 
•   SQLWays コマンドライン - [Sybase] サブセクション 
309 SQLWays Documentation Copyright © 1999-2015 
MySQL Advanced オプション 
このダイアログボックスでは MySQL をターゲットデータベースとした場合のアドバンストオプションを指定します。指定可能なオプションは以下の通り：
•BIN directory ボックスでは、MySQL ユーティリティが存在するフォルダへのパスを指定します。 (...) をクリックしフォルダを参照することができます
•Table type ボックスでは、MySQLデータベースのテーブルを生成する際のテーブルタイプを指定します。MySQL は２つの異なるテーブルをサポートしています： トランザクションセーフテーブル (InnoDB およびBDB) と 非トランザクションセーフテーブル (HEAP, ISAM, MERGE, および MyISAM)。 例えば、InnoDB が選択された場合、MySQLのCREATE TABLE ステートメントには TYPE=InnoDB 句が追加されます
•Data load option ボックスでは、LOADコマンドに追加するオプションを選択します。もし Replace が指定された場合、対象テーブルにプライマリまたはユニークキーが存在する既存のローは更新され、プライマリキーが存在しないローは新たに追加されます。もし Ignore が指定された場合、対象テーブルにプライマリまたはユニークキーが合致する既存のローは更新されません。プライマリまたはユニークキーが存在しないローは追加されます
•デフォルトでは Import from client チェックボックスは選択されており、MySQL LOAD DATA INFILEコマンドにはLOCAL キーワードが追加されます。 LOCAL が指定された場合、データファイルはクライアントホスト上に配置することができます。もし Import from client チェックボックスがクリアされた場合、LOCAL キーワードは追加されず、データファイルはインポート実行前にMySQL サーバに配置する必要があります
コマンドラインで MySQL オプションを指定するには：  
•SQLWays コマンドライン - [MySQL] サブセクション
Pervasive.SQL Advanced オプション 
このダイアログボックスは Pervasive.SQL ターゲットデータベースのアドバンストオプションを指定します。指定可能なオプションは以下の通りです：  
•   BIN directory ボックスでは、BUTILのような Pervasive.SQL ユーティリティが存在するフォルダへのパスを入力します。 (...) をクリックしフォルダを参照することができます 
•   Data directory ボックスでは、 データベースのデータファイル (.mkd files) が存在するフォルダへのパスを入力します。 (...) をクリックしフォルダを参照することができます。このオプションは BUTIL ユーティリティ向けのものです 
コマンドラインで Pervasive.SQL のオプションを指定するには：  
•   SQLWays コマンドライン - [Pervasive] サブセクション 
311 SQLWays Documentation Copyright © 1999-2015 
Step 3- データベースオブジェクトやクエリの指定 
このページでは、ソースデータベースからターゲットデータベースへ移行するデータベースオブジェクト（テーブル、ビューなど）を選択します
•Specify Objects がドロップダウンリストから選択された場合、データベースオブジェクトを個別に決定することができます
• 必要なオブジェクトを左のリストから右のリストへ移動します
ヒント：選択したオブジェクトを追加するには、右のリストへドラッグアンドドロップするか、右矢印ボタンをクリックし
ます。逆に移動したオブジェクトを元に戻すには左矢印ボタンをクリックします
•Use Query がドロップダウンリストから選択された場合：
• Specify a SQL query statement がクリックされた場合、SQL クエリを直接入力します
• Specify a file containing a SQL query statement がクリックされた場合、(...) をクリックしてステートメント
が格納されたファイルを参照します
Step 4 - Set DDL and Data オプション 
このページではエクスポートの段階で生成されるSQLスクリプトやデータファイルにオプションを指定します。  
前のステップでターゲットデータベースへ移行すると選択されたソースデータベースのオブジェクト（tables, views, stored procedures, functions, triggers および packages) はこのページの左側に表示されます。このページの右側は選択されたオブジェクトに関する各種設定が表示されます。 
SQLWays はソースデータベースオブジェクトの定義をエクスポートする際にSQLスクリプトを生成します。これらのスクリプトはターゲットデータベースにデータベースオブジェクトを生成するための DDL ステートメントを含んでいます。 
•   DDL オプション 
•   Data オプション 
313 SQLWays Documentation Copyright © 1999-2015 
DDL オプション 
オプションは以下の通りです：
•Tables設定：
• Change column names case to チェックボックスが選択された場合、SQLステートメントでカラム名の大文字小文字を選択できます： Upper, Lower。もし、Change column names case to チェックボックスがクリアされた場合、カラム名の大文字小文字は変更されず、ソースデータベースから取得したそのままになります
• Use constraint names of the source database in DDL statement チェックボックスが選択された場合、ソースデータベースの制約名がDDLスクリプトの生成時に使用されます。そうでない場合、制約名はスキップされます。デフォルトは、Use constraint  
• Convert identity columns チェックボックスが選択された場合、SQLWays はカラムの identity 属性を変換します。もし、Convert identity columns チェックボックスがクリアならば、SQLWays は identity 属性を抽出しません。Identity カラムは一般的にテーブルのユニークなロー識別子としてプライマリキー制約と共に使用されます 
• デフォルトでは Force NOT NULL constraints for columns that make up a primary key チェックボックスは選択されており、全てのプライマリキーカラムはNOT NULL制約付きで生成されます。いくつかのデータベース (Oracle, Sybase, Access 等) では、NOT NULL制約付きのプライマリキーカラムを指定せずテーブルを生成し、後でプライマリキーを追加する時にカラムをNOT NULLに変更する事ができます。他のデータベース (IBM DB2, Microsoft SQL Server, MySQL 等) では NOT NULL制約付きのプライマリキーカラムを先に生成する必要があります 
• デフォルトでは Remove NOT NULL constraints from all columns except primary key columns チェックボックスはクリアされており、ターゲットデータベースでプライマリキー以外のカラムのNOT NULL 制約の削除は行われません
•SQL スクリプト設定:
• Omit schema names in SQL scripts: このオプションはスクリプトのDDLステートメントでスキーマ（owner）名が省略されるかを指定します。これによりこのユーザ向けにデフォルトスキーマ（owner）名を使用することができます 
• Change schema names to: このオプションはエクスポートしたデータベースオブジェクトのスキーマ(owner)名を変更する事ができます。もし、値が指定された場合、SQLWays はソーススキーマ (owner) 名を指定された値に変更します。もし何も指定されなかった場合、スキーマ (owner) 名は変更されずソースの値が使用されます 
• Use statement termination string: このオプションはスクリプトのSQLステートメントの終端文字を指定します。デフォルト値はセミコロン(:)です。もしターゲットデータベースがSybase または Microsoft SQL Server の場合、デフォルト値は GO です
Generate DDL チェックボックスが選択された場合： 
• Generate the DROP TABLE statement for each table チェックボックスが選択された場合、DROP TABLE ステートメントがCREATE TABLE ステートメントの前に生成されます 
      
• Generate the DROP INDEX statement for each index チェックボックスが選択された場合、DROP INDEX ステートメントが各 CREATE INDEX ステートメント毎に生成されます。デフォルトでは Generate the DROP INDEX statement for each index チェックボックスはクリアされています。このオプションはテーブルの再作成を行わず、インデックス生成のスクリプトが再実行される場合に便利です 
• Cascade referential integrity constarints チェックボックスが選択された場合、CASCADE CONSTRAINTS オプションが DROP TABLE ステートメントに指定されます。現在のところこのオプションはOracleのみサポートされています。詳しい情報は テーブルのドロップ を参照してください。このオプションはターゲットデータベースがOracleでGenerate the DROP TABLE statement チェックボックスが選択された時のみ有効です 
•   Global Data Type Mapping:  これらの 設定はソースデータベースのグローバルデータ型がターゲットデータベースにマッピングされるかを示します 
•   Column Name Mapping: これらの 設定はソースデータベースのグローバルデータ型がターゲットデータベースにマッピングされるかを示します 
コマンドラインで DDL オプションを指定するには：  
•   SQLWays コマンドライン - [DDL] サブセクション 
315 SQLWays Documentation Copyright © 1999-2015 
Data オプション 
SQLWays はデータをテキストファイルにエクスポートします 
•General
• Export Data チェックボックスが選択された場合：• Start row ボックスに、変換を開始するローの番号を入力します。デフォルト値は 1 です• Number of rows ボックスに、エクスポートされるローの数を入力します。デフォルト値はクエリ条件に合致する全てのローです
• Prefetch count ボックスに、テキストファイルに出力する前に読み込むローの数を入力します。デフォルト値は 1000ローです
•Formats: このページでは、テキストファイルの形式と様々な属性の設定が出来ます
• Use datetime format チェックボックスが選択された場合、テキストファイルへ出力する日付時刻データ型の形式を指定することができます。日付時刻データ型は有効な日付と時刻の組み合わせです。データベースにより値は異なります。Oracle では DATE データ型、IBM DB2 では TIMESTAMP データ型、Microsoft SQL Server と Sybase では DATETIME データ型です 
日付時刻形式は以下に示す一つ以上の日付時刻フォーマット要素で構成されます
YYYY - 4-数字の年 YY - 年の末尾２数字 MM - 月の短縮形2-数字 (01-12) MON - 月名の短縮形 3-文字 (JAN, FEB 等) DD - 2-数字の日 (01-31)  HH - 2-数字の時刻 (01-12)  HH12 - 2-数字の時刻 (01-12)  HH24 - 2-数字の時刻 (00-23)  MI - 2-数字の分 (00-59) SS - 2-数字の秒 (00-59) 
F - 秒の小数点以下。F 記号の数字は精度を示します。例えば、FFF はミリ秒の精度、FFFFFF はマイクロ秒の精度です。例えば、21-DEC-2002 21-21-00 のような日付時刻を取得する場合、DD-MON-YYYY HH24-MI-SS という日付時刻フォーマットを指定します。もし、Use datetime format チェックボックスがクリアされている場合、デフォルトの日付時刻フォーマットが使用されます。デフォルトでは、ODBC ドライバは日付時刻の値をISO形式 YYYY-MM-DD HH24:MI:SS.FFF (FFF 部分はデータベースに依存)で変換します 
• 日付時刻データは有効な日付と時刻の組み合わせで構成されます。時刻は小数点以下を含むことがあります。例えば、IBMDB2 TIMESTAMP データ型はマイクロ秒を含むことができます。Microsoft SQL Server と Sybase のDATETIME はミリ秒が可能です。Save datetime fraction ボックスでは、小数点以下どれだけを格納できるか選択する事ができます。
Yes が選択された場合、秒の小数点部分はテキストファイルに出力されます。 No が選択された場合、秒の小数点部分はテキストファイルに出力されません。 Default が選択された場合、ターゲットデータベースがOracle以外であれば秒の小数点部分はテキストファイルに出力されます。もし、Default が選択され、ターゲットデータベースが Oracle で日付時刻データ型がOracle のDATE データ型に変換された場合、Oracle DATE型は秒の小数点以下をサポートしないため、小数点部分は出力されません。もし、Default が選択され、ターゲットデータベースが Oracle で日付時刻データ型がOracle のTIMESTAMPデータ型に変換された場合、Oracle TIMESTAMP型は秒の小数点以下をサポートするため、小数点部分はファイルに出力されます。 
注：このオプションは Datetime format オプション(先に記述)に値が指定されている場合は無視されます
      
• Use date format チェックボックスが選択されている場合、テキストファイルに出力する日付データ型のフォーマットを指定する事ができます。日付は３つの部分で構成されます (year, month および day)。時刻部分なしで日付の値を保持できる日付データ型は全てのデータベースに備わってはいません。例えば、IBM DB2 と MySQLはそのようなデータ型 (DATE データ型) を持っています。日付形式は以下に示す一つ以上の日付フォーマット要素の組み合わせで構成されます： 
YYYY - 4-数字の年 YY - 年の末尾２数字 MM - 月の省略形 2-数字 (01-12) MON - 月名の省略形 3-文字 (JAN, FEB etc) DD - 2-数字の日 (01-31) 
例えば、 21-DEC-2002 のような形式の日付を得るには、DD-MON-YYYY のような日付形式を指定します。もし、Use date format チェックボックスがクリアされていれば、デフォルトの日付フォーマットが使用されます。デフォルトでは、ODBC ドライバは日付の値を ISO 形式 YYYY-MM-DD で変換します 
• Use date format チェックボックスが選択されている場合、テキストファイルに出力する日付データ型のフォーマットを指定する事ができます。日付は３つの部分で構成されます (year, month および day)。時刻部分なしで日付の値を保持できる日付データ型は全てのデータベースに備わってはいません。例えば、IBM DB2 と MySQLはそのようなデータ型 (DATE データ型) を持っています。日付形式は以下に示す一つ以上の日付フォーマット要素の組み合わせで構成されます： 
HH - 2-数字の時刻 (01-12)  HH12 - 2-数字の時刻 (01-12)  HH24 - 2-数字の時刻 (00-23)  MI - 2-数字の分 (00-59)  SS - 2-数字の秒 (00-59)  
例えば、21-21-00 のような時刻を得る場合、HH24-MI-SS のような時刻形式を指定します。もし、Use time format チェックボックスがクリアされている場合、デフォルトの時刻フォーマットが使用されます。デフォルトでは、ODBC ドライバは時刻の値を ISO 形式 HH24:MI:SS で変換します 
• デフォルトでは Use ODBC float conversion チェックボックスは選択されており、数値データ (REAL, FLOAT, DOUBLE データ型)は ODBCドライバによるテキスト表現に変換されます。それ以外の場合、SQLWays が変換を行います 
•Decimal point: このオプションは数値の小数点として使用される単一文字を指定します。デフォルト値は地域設定に依存します 
•   Files 
• Default for the target チェックボックスが選択された場合、テキストファイルへの出力形式を指定することができます。以下の値が指定可能： 
カラム区切り (CSV) 出力形式 
固定長出力形式  タブ区切り出力形式 INSERT ステートメント XML 出力形式 
Btrieve 出力形式 
317 SQLWays Documentation Copyright © 1999-2015 
• Column delimeter ボックスでは、テキストファイルでのカラムの区切り文字を入力します。このオプションは CSVformat の場合のみ有効です。デフォルト値はカンマです。一つ以上の文字をカラム区切り文字として指定することも可能です
• Blanks count ボックスでは、FIX (fixed length) output format での、カラムの間に配置する空白の数を入力します。デフォルト値は 1 です 
• Line delimeter ボックスでは、テキストファイルでの行区切り文字を入力します。デフォルト値は 行復帰と改行文字(0x0D0A または ¥r¥n)です。インポート対象がUnixシステムの場合、デフォルト値は改行文字 (0x0A または ¥n) です
• Replace new line ボックスでは、データ内の改行文字を置き換える文字列を入力します。改行文字は Windowsの場合0x0D0A または ¥r¥n 、Unixの場合 0x0A または ¥n です 
• Remove new line チェックボックスが選択された場合、改行文字はデータから削除されます。改行文字は Windowsの場合 0x0D0A または ¥r¥n 、Unixの場合 0x0A または ¥n です 
コマンドラインで Data エクスポートオプションを指定するには： 
•SQLWays コマンドライン - [Data] サブセクション
       
Step 5 - エクスポートファイルオプションの指定 
このページではエクスポートファイルの作成場所などのオプションを指定します：  
•   Export directory ボックスでは、データファイル、SQL、インポートスクリプト、およびログファイルが作成されるフォルダへのパスを指定します。 (...) をクリックしてフォルダを参照する事ができます。カレントディレクトリがデフォルトフォルダです。もしディレクトリが存在しない場合、SQLWays は \Ispirer\SQLWays 3.7\Project ディレクトリに作成します 
•   Report file name ボックスでは、エクスポートディレクトリに作成される変換結果が格納される HTML レポートファイルの名前を指定します。エクスポート完了後に有効となる View Report... ボタンをクリックすると、マイグレーションの最終ステップでレポートを参照することができます 
•   エクスポートディレクトリに作成されたログファイルを参照することで移行作業を多角的に理解する事ができます。Log file name ボックスでは、ログファイル名とエラー発生時に処理を継続するか否かを定義する事ができます。デフォルトではContinue processing when an error occurs チェックボックスは選択されており、SQLWays は処理を停止せず次のタスクを処理しようと試みます。もし Run in trace mode チェックボックスが選択された場合、詳細情報がログに出力されます。これは主に技術サポート担当より依頼され、データベースのエクスポートと変換の問題解決に使用されます 
•   デフォルトでは Divide data file into parts of チェックボックスはクリアされており、エクスポートされたテーブルのテキストファイルは分割されていません。この場合、ログ(sqlways.log)は以下の様に記録されます ： 
Output data file: C:\Program Files\Ispirer\SQLWays 3.7\Project\gsd_locker_assignment.txt 
Divide data file into parts of チェックボックスが選択された場合、テキストファイルの最大サイズをエディットボックスに指定する事ができます（デフォルトは2G）。値の後ろの G, M, K はそれぞれギガバイト、メガバイト、キロバイトを示します。このサイズを超える場合、SQLWays はテキストファイルを分割します。ローがファイルにまたがって格納されることはありません。SQLWays が作成するファイル名： table_name.txt, table_name2.txt, ... table_nameN.txt.  注： 分割されたファイルの最小サイズは最大ローサイズ（LOBデータを除く）をプリフェッチロー数で倍した値よりも大きくなればなりません。 
もし分割が指定され、ファイルが分割された場合のログ(sqlways.log)は以下の様に記録されます：  
データファイルは1Gのファイル２つに分割: Output data file: C:\Program Files\Ispirer\SQLWays 3.7\Project\gsd_locker_assignment.txt Output data file: C:\Program Files\Ispirer\SQLWays 3.7\Project\gsd_locker_assignment2.txt 
•   LOB objects options ボックス： 
• LOB directory ボックスでは、パスを入力するか (...) をクリックして LOB オブジェクト (Oracle, IBM DB2 の CLOB および BLOB データ型； Microsoft SQL Server, Sybase のTEXT および IMAGE データ型； Access および FoxPro のMEMO データ型) のデータがエクスポートされるフォルダを指定します。これは IBM DB2 や Oracle への移行にのみ使用されます。SQLWays はLOB ディレクトリ上に各 LOB 値毎に１ファイルを作成し、ローを格納するファイル名を指定します。デフォルト値はエクスポートディレクトリ配下のサブディレクトリです 
• Write the LOB data inside the text file ボックスを選択すると、 LOB カラムのデータ (CLOB, BLOB, TEXT, IMAGE および MEMO) がテキストファイル内に出力されることを指定します。もしターゲットデータベースがMicrosoft SQL Server, Sybase, MySQL または Pervasive.SQL の場合、この設定に関わらず、LOB データはテキストファイル内に出力されます。これにより、Microsoft SQL Server や Sybase には BCPユーティリティで、MySQL にはLOAD DATA INFILE コマンドで、Pervasive.SQL には BUITIL ユーティリティで、LOBデータを転送する事が出来ます。デフォルトでは、ターゲットデータベースが Oracle または IBM DB2 または未指定の場合、LOB 値は個別のファイルに出力されます。これにより、Oracle は SQL Loader、IBM DB2 はIMPORT/LOAD ユーティリティで LOB データを転送する事ができます 
319 SQLWays Documentation Copyright © 1999-2015 
• デフォルトではCreate a LOB subdirectory for each table チェックボックスは選択されており、SQLWays はLOB ディレクトリ配下に各テーブル毎にサブディレクトリを作成し、LOB ファイルをまとめることにより性能向上を図っています。サブディレクトリ名はテーブル名です。ファイル名はテーブル名に拡張子としてファイルの作成毎の番号が振られたものです
Step 6 – インポートオプションの指定 
このページではインポートステージのオプション指定を行います。 
SQLWays により異なるシステムおよびプラットフォーム間でのエクスポートおよびインポートを行う事ができます。 
•   Import is executed on the local system (remote target database) をクリックした場合、Start import automatically チェックボックスを選択し、インポートが自動的に開始されるようにします 
•   Import is executed on a remote system (このオプションでは SQLWays はファイルを参照する適切なインポートスクリプトを生成します) をクリックした場合、ターゲットデータベースへのインポートが実行されるオペレーティングシステム (Microsoft Windows または Unix system) を指定しなければなりません。このオプションはSQLWaysが生成するスクリプトのパス名や改行文字のルールも決定します 
• Windows が System ボックスで選択された場合、SQLWays は Windows のコマンドインタープリターでインポート用コマンドファイルを生成します。 Windows はディレクトリ区切り文字としてバックスラッシュ記号を使用 (d:¥temp¥dir¥subdir1) します。Windows では改行は復帰文字と改行文字 (0x0D0A または ¥r¥n) で定義されます。デフォルトのシステムは Windows です 
• Unix が System ボックスで選択された場合、SQLWays は Bourne shell スクリプトを生成します。このスクリプトは Bourne shell と上位互換を持つ Korn shell で実行する事ができます。 Unix ディレクトリ区切り文字としてスラッシュ記号 (tmp/dir1/subdir1) を使用します。Unix では改行は改行文字 (0x0A または ¥n) のみで表現されます 
• ◦デフォルトでは、SQLWays は shell スクリプトを /bin/sh で実行するように指定します。このオプションにより
別のシェルを指定する事ができます、例： /usr/bin/sh 。このオプションはインポートがUnixで実行されない場合は選択できません • Directory ボックスでは、インポートが実行されるフォルダのパスを指定するか、 (...) をクリックし Browse for folder ダイアログボックスでフォルダを参照する事ができます。もし Unix system でインポートを実行する場合、このオプションでUnixのパスを指定します。/usr/reports/data/  
• LOB directory ボックスでは、LOB オブジェクト (ラージオブジェクト) のデータが存在するフォルダのパスを指定するか、 (...) をクリックしフォルダを指定する事ができます。これは IBM DB2 や Oracle への移行で、他の場所にあるエクスポートファイルをインポート前に転送し、LOB ファイルが /IMPDIR のサブディレクトリに存在しない場合にのみ使用されます。このオプション使うと、SQLWaysはファイルを参照する適切なインポートスクリプトを生成します。デフォルト値はインポートディレクトリ上のサブディレクトリです 
•   Migration sequence for tables では、テーブルの制約とインデクスの作成とデータのインポートの順番を指定します。選択可能な値は Clean (データのインポート前に制約を作成); Fast (制約とインデクス作成前にデータをインポート); Ready (データインポート前に制約とインデクスを作成)。このオプション設定により、SQLWays はテーブルをインポート用の異なるコマンドファイルを生成します。デフォルト値は Cleanです 
321 SQLWays Documentation Copyright © 1999-2015 
SQLWays コマンドライン 
SQLWays は全ての移行タスクをオペレーティングシステムのコマンドラインやシェルスクリプトから実行する事ができます。
各種オプションをコマンドラインまたは初期化ファイル（sqlways.ini）で指定することができます。コマンドラインでは全般的なオプションだけを指定し、初期化ファイルでは全般的なものと移行プロジェクト特有のオプション両方を指定するのに使われます。
コマンドラインで指定するオプションは初期化ファイルのオプションに優先します。もし同じオプションがコマンドラインと初期化ファイルの両方で指定された場合、コマンドラインのオプションの値が使用されます。
•コマンドラインオプション
•初期化ファイルオプション
•[Common] •[Data] •[DDL] •[Windows] •[Unix] •[Oracle] •[IBM DB2] •[Microsoft SQL Server] •[Sybase] •[MySQL] •[Pervasive] 
コマンドラインオプション 
SQLWays をコマンドラインで実行するには、まずコマンドラインウィンドウを開きます (Windows NT/2000/XP では cmd.exe、Windows 9.x では command.exe)。オプションを設定して SQLWays.exe を実行します。 
以下のセクションでは有効なコマンドラインオプションについて説明します。 
SQLWays.exe /D = DataSourceName [/U = UserName] [/P = Password] [/T = TableName] [/V = ViewName] [/SP = StoredProcName] [/FN = FunctionName] [/TG = TriggerName] [/PKG = PackageName] [/S = SelectStatement] [/SF = Filename] [/TF = Filename] [/EXC = Column1] [/SROW = StartRow] [/CNROWS = CountOfRows] [/TARGET = TargetDBMS] [/TPROD = TargetDBMSProduct] [/TVER = TargetDatabaseVersion] [/TD = TargetDatabaseName] [/TU = TargetUserName] [/TP = TargetUserPassword] [/MIGS = MigrationSequence] [/IMPS = ImportSystem] [/DIR = ExportDir] [/LOBDIR = LOBFilesDir] [/IMPDIR = ImportDir] [/IMPLOBDIR = ImportLOBDir] [/OSN = OutSchemaName] [/OTN = OutTableName] [/OFN = OutFilesName] [/OTF = OutTextFileName] [/EMPS] [/DDL] [/ OF = OutFormat] [/CDEL = ColumnDelimiter] [/LDEL = LineDelimiter] [/DECPT = DecPoint] [/STDEL = StatementDelimiter] [/LOBIN] [/TABLST = ListFileName] [/R = RowsPrefetch] [/INI = InitializationFile] [/NSTOP] [/ GCMD = GenCmdFile] [/NODDL] [/NOCMD] [/RPT = ReportFileName] [/LOG = LogFileName] [/TRACE] [/REG = RegInfo] [/UNREG] 
コマンドラインオプションは大文字小文字を区別せず、任意の順で指定することができます。 
•   /D – データソース名（ODBC エイリアス） 
•   /U – ユーザ名 
•   /P – パスワード 
•   /T - テーブル名、リストまたはテンプレート (*.*) 
•   /V - ビュー名、リストまたはテンプレート (*.*) 
•   /SP – ストアドプロシージャ名、リストまたはテンプレート (*.*) 
•   /FN – ファンクション名、リストまたはテンプレート (*.*) 
•   /TG – トリガ名、リストまたはテンプレート (*.*) 
•   /PKG – パッケージ名、リストまたはテンプレート (*.*) 
•   /F - スクリプトファイルのパス、名前、リストまたはテンプレート (*.*) 
•   / FF - スクリプトファイルのパス、名前、リストまたはテンプレートを含むテキストファイル 
•   /S - SQL SELECT ステートメント 
•   /SF - SQL SELECT ステートメントが記述されたファイル 
•   /EXC - 変換から除外するカラムのリスト（デフォルトなし） 
•   /SROW – 開始ロー(デフォルト 1) 
•   /CNROWS – エクスポートするローの数(デフォルトは全ロー) 
•   /TARGET - ターゲットデータベースの種類 (デフォルトなし) 
•   /TPROD - ターゲットデータベースの製品 
323 SQLWays Documentation Copyright © 1999-2015 
•/TVER - ターゲットデータベースのバージョン
•/TD – ターゲットデータベースの名前
•/TU – ターゲットデータベースのユーザ名
•/TP – ターゲットデータベースのユーザパスワード
•/MIGS - マイグレーションシーケンス (デフォルト Clean)
•/IMPS – インポートシステム (デフォルト Windows)
•/DIR – エクスポートディレクトリ (デフォルト current)
•/LOBDIR - LOB ファイルのディレクトリ (デフォルトは /DIR配下のLOBSサブディレクトリ)
•/IMPDIR – インポートが実行されるディレクトリ (デフォルト /DIR)
•/IMPLOB - LOB ファイルのインポートディレクトリ (デフォルトは /IMPDIR配下のLOBSサブディレクトリ)
•/OSN - 出力スキーマ（オーナ）名 (デフォルトはソースのスキーマ名)
•/OTN - 出力テーブル名（デフォルトはソースのテーブル名）
•/OFN – 出力ファイル名 (デフォルトは出力テーブル名)
•/OTF – 出力テキストファイル名（場合により拡張子付き)
•/EMPS - DDLステートメントでのスキーマ（オーナ）名の省略
•/DDL - DDLステートメントのみ生成
•/OF - 出力フォーマット (デフォルトは /TARGETによる)
•/CDEL - カラム区切り文字 (デフォルトはカンマ)
•/LDEL – 行区切り文字 (デフォルトは行復帰と改行文字)
•/DECPT – 小数点文字 (デフォルトはピリオド)
•/STDEL - ステートメント終端文字 (デフォルトはセミコロン)
•/LOBIN - LOB データをテキストファイル内に出力
•/TABLST – テンプレート /T に合致するテーブル一覧を作成
•/R - プリフェッチ件数 (デフォルト 1000)
•/INI – 初期化ファイル名 (デフォルト sqlways.ini)
•/NSTOP - エラー発生時の継続
•/GCMD - General コマンドファイル名(デフォルトは /IMPSによる)
•/NODDL - DDL スクリプトを生成しない
•/NOCMD - OS コマンドファイルを生成しない
•/RPT - レポートファイル名 (デフォルト sqlways_report.html)
•   /LOG – ログファイル名 (デフォルト sqlways.log) 
•   /TRACE - トレースモードでの実行 
•  /REG - ライセンスの登録 
•  /UNREG - ライセンスの解除 
325 SQLWays Documentation Copyright © 1999-2015 
/D – データソース名 (ODBC エイリアス) 
構文： /D=DataSourceName 
このオプションはソースデータベースの名前を指定します。これはデータソースの ODBC エイリアス名です。 
このオプションは OBDC がサポートする全てのデータソース型： System, User または File DSN を指定する事ができます。例えば、System または User DSN は /D=DsnName と指定します。File データソースは /D=C:\PathToFileDSN\FileDsn.dsn の様に指定します。
このオプションは必須です。このオプションは初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプションを参照してください。
       
/U – ユーザ名 
構文： /U=UserName 
ソースデータベースに接続するためのユーザ名（ログイン名）を指定します。このユーザはエクスポート対象のデータベースオブジェクトや属性にアクセスする権限を持っていなければなりません。  
このオプションは初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプションを参照してください。 
327 SQLWays Documentation Copyright © 1999-2015 
/P – パスワード 
構文： /P=Password 
ソースデータベースに接続するためのパスワードを指定します。SQLWaysはパスワードのログ出力を行いません。 
このオプションは初期化ファイルに指定する事ができます。詳しくは初期化ファイルのオプションを参照してください。
/T - テーブル名、リストまたはテンプレート 
構文； /T=[SchemaName.]TableName [, NextTable] 
このオプションはエクスポート対象のテーブルを指定します。  
データベースがスキーマ（テーブルのオーナー）をサポートしている場合、明示的にテーブルのスキーマ（オーナー）名を指定するかデータベースに接続したユーザのデフォルトのスキーマ（オーナー）名を使用することができます。 
カンマで区切られたテーブルのリストまたはテーブルのテンプレートを指定する事ができます。例えば、/T=*.* または /T=%.% はデータベース内の全てのテーブルをエクスポートします。/T=schema1.*, schema2.* または /T=schema1.%, schema2.% は、スキーマ schema1 および schema2 の全てのテーブルをエクスポートします。 
注： いくつかのデータベースではスキーマをサポートしていません。例えば、Access データベースの全てのテーブルをエクスポートするには、/T=* または /T=% を指定します。  
このオプションが指定された場合、各テーブルの全てのローとカラムがエクスポートされます。テーブルのサブセットを指定するには、 /EXC オプションでカラムを除外したり、 /SROW および /CNROWS オプションで開始ローとローの数を指定する事ができます。さらに複雑なテーブルのサブセット、クエリベースのサブセット、複数テーブルの使用によるクエリ定義を行うには /S および /SF オプションを参照してください。 
329 SQLWays Documentation Copyright © 1999-2015 
/V - ビュー名、リストおよびテンプレート 
構文： /V=[SchemaName.]ViewName [, NextView] 
このオプションはエクスポートおよび変換対象のビューを指定します。
データベースがスキーマ（テーブルのオーナー）をサポートしている場合、明示的にビューのスキーマ（オーナー）名を指定するかデータベースに接続したユーザのデフォルトのスキーマ（オーナー）名を使用することができます。
カンマで区切られたビューのリストまたはビューのテンプレートを指定する事ができます。例えば、/V=*.* または /V=%.% はデータベース内の全てのビューをエクスポートします。 /V=schema1.*, schema2.* または /V=schema1.%, schema2.% はスキーマ schema1 および schema2 の全てのビューをエクスポートします。  
/SP - ストアドプロシージャ名、リストおよびテンプレート 
構文： /SP=[SchemaName.]StoredProcName [, NextStoredProc] 
このオプションはエクスポートおよび変換対象のビューを指定します。  
データベースがスキーマ（テーブルのオーナー）をサポートしている場合、明示的にビューのスキーマ（オーナー）名を指定するかデータベースに接続したユーザのデフォルトのスキーマ（オーナー）名を使用することができます。 
カンマで区切られたビューのリストまたはビューのテンプレートを指定する事ができます。例えば、/V=*.* または /V=%.% はデータベース内の全てのビューをエクスポートします。 /V=schema1.*, schema2.* または /V=schema1.%, schema2.% はスキーマ schema1 および schema2 の全てのビューをエクスポートします。  
331 SQLWays Documentation Copyright © 1999-2015 
/FN - ファンクション名、リストおよびテンプレート 
構文： /FN=[SchemaName.]FunctionName [, NextFunction] 
このオプションでエクスポートおよび変換対象のファンクションを指定します。
データベースがスキーマ（テーブルのオーナー）をサポートしている場合、明示的にファンクションのスキーマ（オーナー）名を指定するかデータベースに接続したユーザのデフォルトのスキーマ（オーナー）名を使用することができます。
カンマで区切られたファンクションのリストまたはファンクションのテンプレートを指定する事ができます。例えば、/FN=*.* or /FN=%.% はデータベース内の全てのファンクションをエクスポートします。/FN=schema1.*, schema2.* または /FN=schema1.%, schema2.% はスキーマ schema1 および schema2の全てのファンクションをエクスポートします。 
/TG - トリガ名、リストおよびテンプレート 
構文： /TG=[SchemaName.]TriggerName [, NextTrigger] 
このオプションでエクスポートおよび変換対象のトリガを指定します。  
データベースがスキーマ（テーブルのオーナー）をサポートしている場合、明示的にトリガのスキーマ（オーナー）名を指定するかデータベースに接続したユーザのデフォルトのスキーマ（オーナー）名を使用することができます。  
カンマで区切られたトリガのリストまたはトリガのテンプレートを指定する事ができます。例えば、/TG=*.* または /TG=%.% はデータベース内の全てのトリガをエクスポートします。/TG=schema1.*, schema2.* または /TG=schema1.%, schema2.% はスキーマ schema1 および schema2 の全てのトリガをエクスポートします。 
333 SQLWays Documentation Copyright © 1999-2015 
/PKG - パッケージ名、リストまたはテンプレート 
構文： /PKG=[SchemaName.]PackageName [, NextPackage] 
このオプションでエクスポートおよび変換対象のパッケージ（サブプログラムのコレクション）を指定します。パッケージはOracleでのみ利用可能です。  
データベースがスキーマ（テーブルのオーナー）をサポートしている場合、明示的にパッケージのスキーマ（オーナー）名を指定するかデータベースに接続したユーザのデフォルトのスキーマ（オーナー）名を使用することができます。
カンマで区切られたパッケージのリストまたはテンプレートを指定する事ができます。例えば、/PKG=*.* または /PKG=%.% はデータベース内の全てのパッケージをエクスポートします。 /PKG=schema1.*, schema2.* or /PKG=schema1.%, schema2.% はスキーマ schema1 および schema2の全てのパッケージをエクスポートします。 
/F - スクリプトファイルのパス、名前、リストまたはテンプレート 
構文： /F=[template of filename].[template of extension] 
このオプションで変換対象のファイルのリストを指定します。 
このオプションの使用例： /F=*.sql; /F=?.*; など 
335 SQLWays Documentation Copyright © 1999-2015 
/FF - スクリプトファイルのパス、名前、リストまたはテンプレートを含むテキストファイル
構文： /FF=[name of the file] 
このオプションで変換対象のスクリプトのリストを含むファイルを指定します。スクリプトのリストの例は次の通り：S:\POC\A1.p S:\POC\A1.p 
このオプションの使用例：sqlways.exe /D=FIXED /SOURCE=Progress 4GL /TARGET=CS /FF=S:\Sqlways\Test\Auto\Progress 4GL\For Converter\CS\Ispirer\Option_FF_absolute\Objects.txt /INI=sqlways.ini /DIR=rslt 
Objects.txt のファイルの内容は以下の通り： S:\Sqlways\Progress 4GL\CS\Ispirer\Option_FF_absolute\src\bo\AbcCode\AbcCode.p S:\Sqlways\Progress 4GL\CS\Ispirer\Option_FF_absolute\src\bo\zKey\zKey.p S:\Sqlways\Progress 4GL\CS\Ispirer\Option_FF_absolute\src\lib\GetLangDesc.i 
/S - SELECT ステートメント 
構文： /S=SelectStatement 
このオプションでエクスポートするデータを定義するSQL SELECT ステートメントを指定します。 
このオプションを使い、テーブルのサブセットや複数テーブル、または複雑なクエリを元にしたデータのエクスポートを行う事ができます。  
ステートメントを二重引用符で囲むことができます。もしテーブルのいくつかのカラムを除外したい場合には、/T および /EXC オプションの使用を検討してください。もしステートメントが長くなる場合には、ステートメントが記述されたファイルを指定できる /SF オプションの使用を検討してください。 
337 SQLWays Documentation Copyright © 1999-2015 
/SF - SELECT ステートメントが記述されたファイル 
構文： /SF=Filename 
このオプションでエクスポート対象のデータを定義する SQL SELECT ステートメントが記述されたファイルを指定します。ファイルを指定する以外では、このオプションは /S オプションと同一です。 SQL SELECT ステートメントに改行文字を含むことができます。
ファイル名にはファイルへのディレクトリパスを含むことができ、任意の拡張子を付けることができます。
例として、/SF=emp.txt はカレントディレクトリのファイルを指定しており、 /SF=d:\scripts\emp.txt は d:\scripts ディレクトリのファイルを指定しています。
/EXC – 変換から除外するカラムのリスト 
構文； /EXC=Column1 [,ColumnNext] 
このオプションは変換から除外されるカラムのリストを指定します。カラムはカンマ区切りで指定します。 
/S オプションを使用してエクスポート対象のカラムを指定する事ができます。しかしながら、カラムのリストが長くなりすぎる場合などでは除外したいカラムを指定する方が容易です。この場合、/Sオプションではなく、 /T および /EXC オプションを使用します。 
/SROW – 開始ロー 
339 SQLWays Documentation Copyright © 1999-2015 
構文： /SROW=StartRow 
このオプションは変換を開始するローの番号を指定します。デフォルト値は 1 です。  
もしこのオプションを大きなテーブルの分割変換に使用する場合、条件によっては安全なやり方でないため注意が必要です。もし可能であれば、/S オプションを使用し、SQL WHERER 句によってテーブルの分割を行って下さい。 
/CNROWS - エクスポートするローの数 
構文： /CNROWS=CountOfRows 
このオプションはエクスポートするローの数を指定します。デフォルト値はクエリ条件に合致する全てのローです。  
341 SQLWays Documentation Copyright © 1999-2015 
/TARGET - ターゲットデータベースの種類 
構文： /TARGET=TargetDBMS 
このオプションはターゲットデータベースの種類を指定します。以下の値を指定することができます：
•Oracle - Oracle データベース
•IBM DB2 - IBM DB2 データベース
•MSSQL - Microsoft SQL Server データベース
•Sybase - Sybase データベース
•MySQL - MySQL データベース
•Pervasive - Pervasive.SQL データベース
このオプションは初期化ファイルに指定する事ができます。詳しくは初期化ファイルのオプションを参照してください。もしこのオプションが指定されない場合、SQLWays はインポートスクリプトを生成しません。 
/TPROD – ターゲットデータベース製品 
構文： /TPROD=TargetDBMSProduct 
いくつかのベンダは複数のデータベース製品を提供しています。ベンダは彼らの製品間の移行作業の簡略化に努めており、それらの製品はSQLの点では多くの類似点を持っています。しかしながら、それらのデータベース間でもまだ特定の差異が確かに存在します。 
このオプションは /TARGET オプションと共に使用され、ソースデータベースの移行対象がどの特定のターゲットデータベース製品なのかを指定します。 
 /TARGET が IBM DB2 である場合、以下の値が /TPROD オプションに指定可能です：  
•   DB2LUW - IBM DB2 for Linux, Unix および Windows (デフォルト) 
•   DB2zOS - IBM DB2 for z/OS および OS/390 
•   DB2iSeries - IBM DB2 for iSeries および AS/400 
 /TARGET が Sybase である場合、以下の値が /TPROD オプションに指定可能です： 
•   Sybase ASE - Sybase Adaptive Server Enterprise (デフォルト) 
•   Sybase ASA - Sybase Adaptive Server Anywhere 
このオプションは初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプションを参照してください。もしこのオプションが指定されなかった場合、SQLWays は /TARGET のデフォルトのデータベース製品を選択します。 
343 SQLWays Documentation Copyright © 1999-2015 
/TVER – ターゲットデータベースのバージョン 
構文： /TVER=TargetDatabaseVersion 
このオプションはターゲットデータベースのバージョンを指定します。
このオプションにより、ターゲットデータベースの特定のバージョン向けのSQL およびインポートスクリプトの調整を行います。  
バージョンオプションはデータベースでサポートされる機能やオプションを定義する事ができます。デフォルト値は、Oracleの場合 9.0.1、IBM DB2 なら 7.2、Microsoft SQL Server ならば 2000、Sybaseならば 12.5、MySQLならば 3.23 です。 
古いデータベースのバージョンを指定する事ができます。それによりこのバージョンでサポートされていない機能がSQLとインポートのスクリプトに記述されないようにできます。
このオプションを初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプションを参照してください。
/TD – ターゲットデータベース名 
構文： /TD=TargetDatabaseName 
このオプションはターゲットデータベースの名前を指定します。Oracleの場合はサービス名です。  
指定された場合、この値はSQLWaysが生成する SQLおよびインポートスクリプトで使用されます。  
このオプションは初期化ファイルで指定する事ができます。詳しくは 初期化ファイルのオプション を
参照してください。 
345 SQLWays Documentation Copyright © 1999-2015 
/TU - ターゲットデータベースのユーザ名 
構文： /TU=TargetUserName 
このオプションはターゲットデータベースのユーザ名（ログイン名）を指定します。
指定された場合、この値は SQLWays が生成する SQLおよびインポートスクリプトで使用されます。  
このオプションは初期化ファイルの対応するデータベースセクションに指定する事ができます。詳しくは 初期化ファイルのオプション を参照してください。
/TP – ターゲットデータベースのパスワード 
構文： /TP=TargetUserPassword 
このオプションはターゲットデータベースのユーザパスワードを指定します。  
指定された場合、この値は SQLWays が生成する DDLステートメントおよびインポートスクリプトで使用されます。   このオプションは初期化ファイルの対応するデータベースセクションに指定する事ができます。詳しくは 初期化ファイルのオプション を参照してください。 
347 SQLWays Documentation Copyright © 1999-2015 
/MIGS – マイグレーションシーケンス 
構文： /MIGS=MigrationSequence 
このオプションはテーブルの移行順序を指定します。このオプションにより、テーブルの制約の作成、データのインポート、インデックスの作成、の順番を選択する事ができます。
設定可能な値：
•Clean - データのインポート前に制約を作成します
•Fast - 制約とインデックス作成の前にデータをインポートします
•Ready - データのインポートの前に制約とインデックスを作成します
このオプションにより、SQLWays はテーブルインポート用の異なるコマンドファイルを生成します。  
このオプションを初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプションを参照してください。
/IMPS - インポートシステム 
構文： /IMPS=ImportSystem 
このオプションはターゲットデータベースへのインポートが実行されるシステムを指定します。SQLWays は Microsoft Windows または Unix システム上でインポートを実行することが出来ます。  
指定可能な値は Windows および Unix です。デフォルト値は Windows です。もし /IMPS=Windows が指定されている場合、SQLWays はインポート用のコマンドファイルをウィンドウズのコマンドインタープリターにより生成します。  
/IMPS=Unix が指定された場合、SQLWays は Bourne シェルスクリプトを生成します。これらのスクリプトは Bourneシェルと上位互換性のある Korn シェルで実行する事もできます。  
このオプションはSQLWaysが生成するスクリプトやファイルで使用されるパス区切り文字や改行文字のルールも決定します。Windows はディレクトリ区切り文字としてバックスラッシュ記号を使用します (d:\temp\dir\subdir1)。Unix はスラッシュ記号を使用します (tmp/dir1/subdir1)。 Windows では、改行は復帰および改行文字 (0x0D0A または \r\n) です。Unix では改行は改行文字のみで表現されます (0x0A または \n)。  
このオプションを初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプションを参照してください。 
349 SQLWays Documentation Copyright © 1999-2015 
/DIR – エクスポートディレクトリ 
構文： /DIR=ExportDir 
このオプションはエクスポートディレクトリを指定します。SQLWays はこのディレクトリにエクスポートデータファイル、SQLおよびインポート用スクリプト、ログファイルを格納します。デフォルト値はカレントディレクトリです。もし指定されたディレクトリが存在しない場合、SQLWaysが作成します。  
このオプションを初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプションを参照してください。
/LOBDIR - LOB ファイルのディレクトリ 
構文： /LOBDIR=LOBFilesDir 
このオプションはLOBオブジェクト（ラージオブジェクト）のデータがエクスポートされるディレクトリを指定します。このオプションは IBM DB2 または Oracle への移行にのみ使用されます。 
それぞれのLOB値について、SQLWays はLOBディレクトリに一つのファイルを作成し、テーブルのローを格納しているASCII形式のファイル名が指定されています。   デフォルト値は /DIR オプションで指定されたディレクトリのサブディレクトリ LOBS です。  
LOB オブジェクトは、Oracle や IBM DB2 では CLOB および BLOB データ型、Microsoft SQL Server および Sybase では TEXT および IMAGE データ型。 Access および FoxProでは MEMO データ型です。 
351 SQLWays Documentation Copyright © 1999-2015 
/IMPDIR - インポートが実行されるディレクトリ 
構文： /IMPDIR=ImportDir 
このオプションはインポートが実行されるディレクトリを指定します。このオプションはインポート実行前にエクスポートファイルを別の場所に転送する場合にのみ必要です。このオプションにより、SQLWaysは適切にファイルを参照したインポートスクリプトを生成する事ができます。
もしインポートを Unix システムで実行する場合、このオプションに Unix のパスを指定します： /usr/reports/data/。デフォルト値は DIR オプションで指定されたディレクトリです。 
このオプションを初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプションを参照してください。
/IMPLOB - LOB ファイルのインポートディレクトリ 
構文： /IMPLOBDIR=ImportLOBDir 
このオプションはインポート段階でLOBオブジェクト（ラージオブジェクト）のデータが存在するディレクトリを指定します。このオプションは IBM DB2 または Oracle への移行において、インポート前にエクスポートファイルが別の場所に転送され、かつLOB ファイルが /IMPDIRのサブディレクトリ LOBS に存在しない場合にのみ使われます。   このオプションを使用することにより、SQLWaysは適切なファイル参照をしたインポートスクリプトを生成する事ができます。デフォルト値は、/IMPDIR オプションで指定されたインポートディレクトリのサブディレクトリ LOBS です。   このオプションを初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプションを参照してください。 
353 SQLWays Documentation Copyright © 1999-2015 
/OSN – 出力スキーマ(オーナ) 名 
構文： /OSN=OutSchemaName 
このオプションによりエクスポートしたデータベースオブジェクトのスキーマ（オーナー）名を変更する事ができます。もし値が指定された場合、SQLWays はソースのスキーマ名を指定された値に変更します。もし no が指定された場合、スキーマ名は変更されずソースの値が使用されます。
もし SQL スクリプト内のスキーマ（オーナー）名を省略したい場合、/EMPS オプションを使用してください。これにより、ユーザのデフォルトスキーマ（オーナー）名を使用する事ができます。
もしスキーマ（オーナー）名とテーブル名の両方を変更したい場合には、/OTN オプションの使用を検討してください。 
/OTN - 出力テーブル名 
構文： /OTN=[OutSchemaName.]OutTableName 
このオプションは出力テーブルの名前を指定します。このテーブル名は SQLWays が生成する SQLおよびインポートスクリプトで使用されます。デフォルト値はソーステーブルの名前です。  もしテーブルのスキーマ（オーナー）名だけを変更したい場合は、/OSN オプションの使用を検討してくださ
355 SQLWays Documentation Copyright © 1999-2015 
/OFN – 出力ファイル名 
構文： /OFN=OutFilesName 
このオプションはエクスポートしたテーブルの出力ファイル名を指定します。このオプションはひとつのテーブルをエクスポートする場合にのみ使用しなければなりません。出力ファイルは、テキスト、ログ、およびスクリプトファイルです。デフォルト値は出力テーブルの名前です。
出力ファイルのタイプにより、 .txt, .sql, .cmd のようなファイル拡張子がファイル名の末尾に付加されます。 
/OTF - 出力テキストファイル名 
構文： /OTF=OutTextFileName 
このオプションは出力ファイル名を指定し、場合によりテキストファイル用のファイル拡張子の指定も行います。このオプションはひとつのテーブルをエクスポートする場合にのみ使用しなければなりません。デフォルトでは、ファイル名はテーブル名または /OFN オプションから取得され、ファイル拡張子 .txt が付加されます。   このオプションが指定された場合、ファイル拡張子 .txt は付加されず、任意のファイル拡張子を指定する事ができます。 
357 SQLWays Documentation Copyright © 1999-2015 
/EMPS - DDLステートメントでのスキーマ (オーナ) 名の省略 
構文： /EMPS 
このオプションは SQL スクリプト内のDDL ステートメントでスキーマ（オーナー）名を省略する様に指定します。これによりユーザのデフォルトスキーマ（オーナー）名を使用することができます。
もしターゲットデータベースが MySQL または Pervasive.SQL である場合、MySQL と Pervasive.SQL はスキーマ（データベースオブジェクトの論理グループ化）をサポートしていないため、/EMPS オプションが設定されていなくともスキーマ名は常に省略されます。
もしデータベースオブジェクトのスキーマ（オーナー）名を変更したい場合には、/OSN オプションの使用を検討してください。 
このオプションは初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプション を参照してください。
/DDL - DDL ステートメントのみ生成 
構文： /DDL 
このオプションはデータベース構造（テーブル、制約、ビュー、ストアドプロシージャなど）のSQL スクリプトのみの生成を指定します。このオプションが指定された場合、データはエクスポートされずインポートスクリプトは生成されません。 
359 SQLWays Documentation Copyright © 1999-2015 
/OF - 出力フォーマット 
構文： /OF=OutFormat 
このオプションはテキストファイルの出力フォーマットを指定します。
指定可能な値：
•CSV – カラム区切り (CSV) 出力フォーマット
•FIX – 固定長出力フォーマット
•TAB – タブ区切り出力フォーマット
•INS - SQL INSERT ステートメント
•XML - XML 出力フォーマット
•BTR - Btrieve 出力フォーマット
デフォルト値は /TARGET オプションの値に依存します。もし /TARGET オプションが Oracle, IBM DB2 または未指定の場合、デフォルト値は CSV フォーマットです。もし /TARGET オプションが Microsoft SQL Server, Sybase または MySQL の場合、デフォルト値は TAB フォーマットです。このフォーマットはデータベース標準のロードツールによってデータを Microsoft SQL Server, Sybase および MySQL データベースに転送するのに適しています。 
もし /TARGET オプションが Pervasive である場合、デフォルト値は BTR です。これは BUTIL ユーティリティが Pervasive.SQL データベースへデータをロードするのに使われる Btrieve ASCII ファイルフォーマットです。 
/CDEL - カラム区切り文字 
構文： /CDEL=ColumnDelimiter 
このオプションはテキストファイルで使用されるカラム区切り文字を指定します。このオプションは CSV フォーマットでのみ使用されます。デフォルト値はカンマです。カラム区切り文字として一つ以上の文字を指定する事ができます。   区切り文字として16進数表示の値を使用する場合、次の構文を使用します： 0xhh。例として、/CDEL=0x2c は区切り文字としてカンマを指定しています。タブ、行復帰、改行文字のような非印字可能文字は \t, \r および \n で表せます。バックスラッシュ文字は \\ で表します。   カラム区切り文字を指定するのに異なる文字表現の組み合わせを使うことができます。例えば、/CDEL=|||0x2c0x2c|||   注： TAB 文字をカラム区切り文字として使用するには、TAB 出力フォーマットを使用します。   このオプションは初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプション を参照してください。  
361 SQLWays Documentation Copyright © 1999-2015 
/LDEL – 行区切り文字 
構文： /LDEL=LineDelimiter 
このオプションはテキストファイルの行区切り文字を指定します。デフォルト値は、/IMPS=Unix が指定されていなければ、行復帰と改行文字 (0x0D0A または \r\n) です。もし /IMPS=Unix が指定されている場合のデフォルト値は改行文字 (0x0A または \n) です。 
このオプションにより、任意の文字を行区切り文字として指定する事ができます。タブ、行復帰、改行文字のような非印字可能文字は \t, \r および \n で表す事ができます。 
良くある場合として、もしデータとして改行文字が含まれている場合、改行文字の値をデータに含まれていない他の文字に変更しなければなりません。これをおこなうことによりインポート／ロードユーティリティが正しくローを処理する事ができるようになります。
このオプションは初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプション を参照してください。
/DECPT - 小数点文字 
構文： /DECPT=DecPoint 
このオプションは数値の小数点を表す単一文字を指定します。デフォルト値は 地域設定に依存します。   小数点文字の値を16進数表現で指定するには、次の構文を使用します： 0xhh。例として、/DECPT=0x2c は小数点文字としてカンマを指定しています。   このオプションは初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプション を参照してください。  
363 SQLWays Documentation Copyright © 1999-2015 
/STDEL - ステートメント終端文字 
構文： /STDEL=StatementDelimiter 
このオプションはSQL スクリプト内のSQLステートメントを終了させる文字を指定します。デフォルト値はターゲットデータベース (/TARGET) が Sybase か Microsoft SQL Server 以外では、セミコロン (;) です。ターゲットデータベースがSybase か Microsoft SQL Server の場合、デフォルトは GO です。 
ステートメント終端文字の値を16進数表現で指定するには、次の構文を使用します： 0xhh。例として、/STDEL=0x40 はステートメント終端文字として AT 記号 (@) を指定しています。 
このオプションは初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプション を参照してください。
/LOBIN - LOB データをテキストファイル内に出力  
構文： /LOBIN 
このオプションはLOB カラム (CLOB, BLOB, TEXT, IMAGE および MEMO) のデータをテキストファイル内への出力を指定します。   デフォルトでは、/TARGET が Oracle, IBM DB2 または未指定の場合、各 LOB の値は個別のファイルに出力されます。これにより Oracle は SQL Loader で、IBM DB2 は IMPORT/LOAD ユーティリティでLOB データを転送する事ができます。   /TARGET が Microsoft SQL Server, Sybase, MySQL または Pervasive.SQL の場合、LOB データは /LOBIN オプションが指定されていない場合でもテキストファイル内に出力されます。これにより、BCP ユーティリティで Microsoft SQL Server と Sybase へ、LOAD DATA INFILE コマンドで MySQLへ、BUTIL ユーティリティで Pervasive.SQL へ、LOB データをインポートする事ができます。  
365 SQLWays Documentation Copyright © 1999-2015 
/TABLST - テンプレートに合致するテーブル一覧を作成 
構文： /TABLST=ListFileName 
このオプションが指定された場合、SQLWays は/T オプションで指定されたテンプレートに合致するテーブルの一覧をファイルに出力します。
例として、SQLWays /t=dept.* /tablst=dept.lst は DEPT スキーマに属するテーブルの一覧を dept.lst ファイルとして生成します。その後、変換したくないテーブル名をコメントアウト（行の先頭にセミコロン）し、SQLWays /tf=dept.lst を実行します。 
このオプションは、ソースデータベースで利用可能なテーブルを参照するのに使うこともできます。
もしファイル名が明示的に指定されない場合、デフォルトの名前は sqlways.lst です。SQLWays は /DIR オプションで指定されたディレクトリにファイルを作成します。
/R - プリフェッチ件数 
構文： /R=RowsPrefetch 
このオプションはテキストファイルへ出力する前に読み込むローの数を指定します。デフォルト値は 1000 ローです。   加えてこの値は内部バッファとインポートユーティリティ用に生成したスクリプト内のコミットポイントに使用されます。このオプションを指定することにより、データのエクスポート処理およびインポート処理は特に著しい高速化が可能です。   
367 SQLWays Documentation Copyright © 1999-2015 
/INI – 初期化ファイル 
構文： /INI=InitializationFile 
このオプションはSQLWaysが使用する初期化ファイルのパスと名前を指定します。このファイルのオプションと構造については、初期化ファイルのオプション を参照してください。
デフォルトでは、/INI オプションが指定されない場合、SQLWays は SQLWays.ini ファイルを使用します。SQLWays はファイルを以下の順番で探索します：
•カレントディレクトリ
•アプリケーションがロードされたディレクトリ
このオプションはSQLWaysに異なる初期化ファイルを使用する様に指定します。このオプションにより、異なるデータベースバージョンなどの様々な移行ルーチンを実装することができます。
例えば、/ini=d:\ini\sqlways1.ini が指定された場合、SQLWaysは初期化ファイルとして d:\ini\ ディレクトリのsqlways1.ini ファイルを使用します。
/NSTOP - エラー発生時の継続 
構文： /NSTOP 
このオプションはエラー発生時の処理の継続を指定します。デフォルトは Yes であり、エラー発生時に SQLWays は処理を停止せず次のタスクを実行しようとします。   このオプションを初期化ファイルに指定する事ができます。詳しくは 初期化ファイルのオプションを参照してください。  
369 SQLWays Documentation Copyright © 1999-2015 
/GCMD - General コマンドファイル名 
構文： /GCMD=GenCmdFile 
このオプションはエクスポートした全てのデータベースオブジェクト（テーブル、ビューなど）のインポートスクリプトを含むgeneral コマンドファイルを指定します。 
SQLWays はエクスポートしたオブジェクト毎にひとつのコマンドファイルを生成します。 このコマンドファイルはひとつのオブジェクト用のDDLステートメントとインポートスクリプトが含まれています。これによって、各データベースオブジェクトを個別にインポートすることができます。
多数のデータベースオブジェクトのインポート作業を簡略化するために、この general コマンドファイルを使用し全てのデータベースオブジェクトのインポートを即座に実行することができます。general コマンドファイル内のテーブルは参照制約の順番に並べます。他のテーブルから参照されるテーブルは先にインポートされなければなりません。
デフォルトの general コマンドファイルは /IMPS=Windows が指定された場合、sqlways_all.cmd (Windows バッチファイル)です。 /IMPS=Unix が指定された場合、sqlways_all.sh (Bourne シェルスクリプト) です。 
このファイルは /DIR オプションで指定されたディレクトリに作成されます。 
SQLWays はエクスポートされたオブジェクトの数に関わらず、常に general コマンドファイルを作成します。 
/NODDL - DDL スクリプトを生成しない 
構文： /NODDL 
このオプションはテーブルのエクスポート時にDDL スクリプトが生成されない様に指定します。このオプションはデータを既存テーブルにインポートする場合に使用されます。   もしこのオプションが指定されずにターゲットデータベースが定義された場合、SQLWays は データベースを新規作成するテーブル定義を再作成する DDL スクリプトを生成します。
371 SQLWays Documentation Copyright © 1999-2015 
/NOCMD - OS コマンドファイルを生成しない 
構文： /NOCMD 
このオプションはOSコマンドファイル（インポートスクリプト）を生成しない様に指定します。SQLWays はデータベースユーティリティを起動し、DDL ステートメントの実行とターゲットデータベースへのデータのインポートを行う、OS コマンドファイルを生成します。
/RPT - レポートファイル名 
構文： /Rpt =ReportFileName 
このオプションはデータベース変換の結果を格納するHTMLフォーマットのレポートファイルを指定します。  
デフォルトのレポートファイル名は sqlways_report.html です。  
このファイルは /DIR オプションで指定したディレクトリに作成されます。
373 SQLWays Documentation Copyright © 1999-2015 
/LOG – ログファイル名 
構文： /LOG=LogFileName 
このオプションはエクスポート処理に関するログ情報の格納に使用されるログファイルを指定します。
デフォルトのログファイル名は sqlways.log です。このファイルは /DIR オプションで指定されたディレクトリに作成
/TRACE - トレースモードでの実行 
構文： /TRACE 
このオプションが指定された場合、詳細情報がログファイルに出力されます。通常、この情報の取得は技術サポート担当が依頼し、データベースのエクスポートおよび変換における問題解決に使用されます。  
375 SQLWays Documentation Copyright © 1999-2015 
/REG - ライセンス登録 
構文： /REG=RegName[;RegNumber] 
このオプションにより、登録情報を入力します。登録者名と番号を入力する必要があります。インストールパッケージに添付されたlicense.html ファイルで license agreement を確認してください。 
もし登録者名と番号のコマンドラインでの指定 (例. SQLWays.exe /REG または SQLWays.exe /REG=会社名) を省略した場合、SQLWays は足りない情報の入力を促します。 
/UNREG - ライセンスの解除 
構文： /UNREG 
このオプションにより、コンピュータから SQLWays のライセンスの解除を行う事ができます。インストールパッケージに添付された license.html ファイルで license agreement を確認してください。  
377 SQLWays Documentation Copyright © 1999-2015 
初期化ファイルのオプション
初期化ファイルは特定の移行プロジェクト向けのオプションの指定と生成するスクリプトの調整に使用されます。デフォルトではこのファイルはカレントディレクトリの SQLWays.ini ファイルです。他のファイルに指定する場合には、コマンドラインで /INI オプションを指定します。 
初期化ファイルオプションのセクションはいくつかのサブセクションで構成されています：
•[Common]
•[Data]
•[DDL]
•[Windows]
•[Unix]
•[Oracle]
•[IBM DB2]
•[MSSQL]
•[Sybase]
•[MySQL]
•[Pervasive]
•[Formatting]
各サブセクションにはオプションとその値が記載されています。
構文： Option=Value 
このオプションに no が指定された場合、デフォルトの値が使用されます。 
[Common] サブセクション 
このサブセクションでは移行プロジェクトの全般的なオプションの指定について説明します。このサブセクションのオプションはコマンドラインでの指定も可能です。コマンドラインで指定されなかったオプションの値は初期化ファイルから取得されます。  
•   DSN -  /D オプション (データソース名) 
•   USER -  /U オプション (ユーザ名) 
•   PWD -  /P オプション (パスワード) 
•   TARGET - /TARGET オプション (ターゲットデータベース) 
•   TARGET_PRODUCT - /TPROD オプション (ターゲットデータベース製品) 
•   TARGET_VERSION -   /TVER オプション (ターゲットデータベースのバージョン) 
•   MIGRATION_SEQUENCE -   /MIGS オプション (マイグレーションシーケンス)。デフォルト値は Clean 
•   IMPORT_SYSTEM -   /IMPS オプション (インポートシステム)。デフォルト値は Windows 
•   DIR -   /DIR オプション (エクスポートディレクトリ) 
•   LOBDIR -   /LOBDIR オプション (LOB ファイルのディレクトリ) 
•   IMPORT_DIR -   /IMPDIR オプション (インポートディレクトリ) 
•   IMPORT_LOBDIR -   /IMPLOB オプション (LOB ファイルのインポートディレクトリ) 
•   OUTFORMAT -   /OF オプション (出力テキストフォーマット) 
•   PREFETCHROWS -   /R オプション (プリフェッチ件数)。デフォルト値は 1000 
•   NONSTOP -   /NSTOP オプション (エラー発生時の継続)。デフォルト値は Yes。設定可能な値 -Yes, No 
379 SQLWays Documentation Copyright © 1999-2015 
[Data] サブセクション 
このサブセクションではデータ変換のカスタマイズとエクスポートファイルのデータ形式の指定について記述します。
•COLUMN_DELIMITER -  /CDEL オプション (カラム区切り)
•LINE_DELIMITER -  /LDEL オプション (行区切り)
•DECIMAL_POINT -  /DECPT オプション (小数点文字)
•DATETIME_FORMAT - このオプションはテキストファイルの日付時刻データ型のフォーマットを指定します
日付時刻データ型は有効な日付と時刻の組み合わせです。データベースにより値は異なります。Oracle では DATE データ型、IBM DB2 では TIMESTAMP データ型、Microsoft SQL Server と Sybase では DATETIME データ型です。 
日付時刻形式は以下に示す一つ以上の日付時刻フォーマット要素で構成されます。
•YYYY - 4-数字の年
•YY - 年の末尾 2 数字
•MM - 月の短縮形2-数字 (01-12)
•MON - 月名の短縮形 3-文字 (JAN, FEB など)
•DD - 2-数字の日 (01-31)
•HH - 2-数字の時刻 (01-12)
•HH12 - 2-数字の時刻 (01-12)
•HH24 - 2-数字の時刻 (00-23)
•MI - 2-数字の分 (00-59)
•SS - 2-数字の秒 (00-59)
F - 秒の小数点以下。F 記号の数字は精度を示します。例えば、FFF はミリ秒の精度、FFFFFF はマイクロ秒の精度です。 
例えば、21-DEC-2002 21-21-00 のような日付時刻を取得する場合、DD-MON-YYYY HH24-MI-SS という日付時刻フォーマットを指定します。
もし、このオプションの値としてno が指定されている場合、デフォルトの日付時刻フォーマットが使用されます。デフォルトでは、ODBC ドライバは日付時刻の値をISO形式 YYYY-MM-DD HH24:MI:SS.FFF (FFF 部分はデータベースに依存)で変換します。 
•DATE_FORMAT - このオプションはテキストファイルの時刻データ型のフォーマットを指定します。
日付は3つの部分（year,month およびday）で構成されます。日付部分なしで時刻の値を保持できる時刻データ型は全てのデータベースに備わっていません。例えば、IBM DB2 と MySQLはそのようなデータ型 (TIME データ型) を持っています。 
時刻形式は以下に示す一つ以上の時刻フォーマット要素の組み合わせで構成されます：
•YYYY - 4-数字の年
•YY - 年の末尾 2 数字
•MM - 月の省略形 2-数字 (01-12)
•MON - 月名の省略形 3-文字 (JAN, FEB など)
•DD - 2-数字の日 (01-31)
例えば、21-21-00 のような時刻を得る場合、HH24-MI-SS のような時刻形式を指定します。 
      
このオプションに値が指定されない 場合、デフォルトの日付フォーマットが使用されます。デフォルトでは、ODBC ドライバは日付の値を ISO 形式 YYYY-MM-DD で変換します。 
•   TIME_FORMAT - このオプションはテキストファイルの時刻データ型のフォーマットを指定します。 
日付部分なしで時刻の値を保持できる時刻データ型は全てのデータベースに備わっていません。例えば、IBM DB2 と MySQLはそのようなデータ型 (TIME データ型) を持っています。 
時刻形式は以下に示す一つ以上の時刻フォーマット要素の組み合わせで構成されます：  
•HH - 2-数字の時刻 (01-12)  
•HH12 - 2-数字の時刻 (01-12)  
•HH24 - 2-数字の時刻 (00-23)  
•MI - 2-数字の分 (00-59)  
•SS - 2-数字の秒 (00-59)  
例えば、21-21-00 のような時刻を得る場合、HH24-MI-SS のような時刻形式を指定します。  
このオプションに値が指定されない場合、デフォルトの時刻フォーマットが使用されます。デフォルトでは、ODBC ドライバは時刻の値を ISO 形式 HH24:MI:SS で変換します。 
•   DATETIME_FRACTION - テキストファイルの日付時刻カラムが秒の小数点以下を保持できるか否かを指定します。日付時刻データは有効な日付と時刻の組み合わせで構成されます。時刻には小数点以下が含む事ができます。例えば、IBM DB2 TIMESTAMP データ型はマイクロ秒を含むことができます。Microsoft SQL Server と Sybase のDATETIME はミリ秒が可能です。  
設定可能な値 - Yes, No。Yes の場合、テキストファイルの日付時刻の値は小数点以下の値を含みます。 No の場合、小数点以下の値が存在してもテキストファイルには格納されません。 
ターゲットデータベースがOracle以外のデフォルト値は Yes です。 
ターゲットデータベースが Oracle であり、日付時刻データ型が Oracle のDATE データ型に変換される場合、デフォルト値は Noです。Oracle の DATE データ型は秒の小数点部分をサポートしていません。  
ターゲットデータベースが Oracle であり、日付時刻データ型が Oracle の TIMESTAMP データ型に変換される場合、デフォルト値はYesです。Oracle の TIMESTAMP データ型は秒の小数点部分をサポートしています。 
注： このオプションは DATETIME_FORMAT オプション（先に記述）に値が指定されている場合は無視されます。 
•   REPLACE_NEWLINE - データの改行文字を置き換える文字列を指定します。改行文字は Windowsの場合 0x0D0A または \r\n 、Unixの場合 0x0A または \n です。 
CHARやVARCHARのような文字型カラムはデータに改行文字を含むことができます。デフォルトでは、SQLWaysはそれらをエクスポートファイルに格納します。このオプションによって、改行文字を置き換える文字列を指定することができます。   例えば、改行文字を zzzで置き換えるには、REPLACE_NEWLINE=zzzと設定します。改行文字を空白で置き換えるには、REPLACE_NEWLINE=" "と設定します。   文字を16進数の値で指定するには、以下の構文を使用します：0xhh。例えば、0x2c はカンマ文字を指定します。タブ、復帰、改行といった印字不能文字は \t, \r および \n のように表記できます。バックスラッシュ記号を指定するには \\ と記述します。異なる文字表現を結合して文字列を指定する事ができます。例えば、REPLACE_NEWLINE=|||0x2c0x2c||| 。   もし、データから改行文字を削除する必要がある場合、REMOVE_NEWLINE オプションを使用します。REPLACE_NEWLINE オプションは REMOVE_NEWLINE オプション（以下参照）が Yesに設定されると無視されます。   多くの場合、データ中に改行文字を保持したい場合、/LDEL オプションを使用し、行区切り文字を変更する必要があります。これによってインポート／ロードユーティリティが適切にローを扱えるようになります。  
381 SQLWays Documentation Copyright © 1999-2015 
•REMOVE_NEWLINE - Yes が指定された場合、改行文字はデータから削除されます。改行文字は Windowsの場合0x0D0A または \r\n 、Unixの場合 0x0A または \n です。
CHARやVARCHARのような文字型カラムはデータに改行文字を含むことができます。デフォルトでは、SQLWaysはそれらをエクスポートファイルに格納します。このオプションによって、改行文字をデータから削除することができます。 デフォルト値はNoです。設定可能な値 - Yes, No。 
改行文字を別の文字列で置き換えたい場合は REPLACE_NEWLINE オプション (上参照)を使用します。 
多くの場合、データ中に改行文字を保持したい場合、/LDEL オプションを使用し、行区切り文字を変更する必要があります。これによってインポート／ロードユーティリティが適切にローを扱えるようになります。
•ODBC_FLOAT_CONVERSION - Yes が指定された場合、数値データ (REAL, FLOAT, DOUBLE データ型) はODBCドライバによるテキスト表現に変換されます。それ以外の場合、SQLWays が変換を行います。デフォルト値はYesです。設定可能な値 - Yes, No。
•LOBS_INFILE - /LOBIN オプション (LOB データをテキストファイル内に配置)。設定可能な値 - Yes, No
•LOBS_DIR_TAB - Yes が指定された場合、SQLWays は各テーブル毎のLOBディレクトリ配下にサブディレクトリを作成し、各テーブルの LOB データを出力します。サブディレクトリ名はテーブル名です。各 LOB 値毎にファイルが作成され、ファイル名はテーブル名に拡張子としてLOB値のシーケンス番号が付与されたものになります。
No が指定された場合、SQLWays は テーブル毎のLOB サブディレクトリを作成せず、全ての LOB ファイルを LOBディレクトリに出力します。
デフォルト値は Yesです。設定可能な値 - Yes, No。 
•FIXFMT_COLUMN_GAPS - このオプションはFIX (固定長) 出力フォーマット での、カラムの間に配置する空白の数を入力します。デフォルト値は 1 です。
•DATAFILE_PART_SIZE - デフォルトではこのオプションはテーブルをエクスポートするテキストファイルが分割されないように指定します。しかし編集ボックスにてファイルの最大サイズを定義することはできません。
このオプションは定義可能で、デフォルトでは 2G 値（2ギガバイト）が設定されています。もし、この制限を超える場合、SQLWaysはテキストファイルを分割します。ローがファイルをまたいで格納されることはありません。SQLWaysは次の様にファイルを生成します： table_name.txt, table_name2.txt, ... table_nameN.txt 
注： 最も小さなファイルのサイズは、ローの最大長（LOBデータを除いた）とプリフェッチされたローの数を乗じた数を超える長さでなければなりません。
SQLWays ウィザードでData エクスポートのオプションを指定するには： 
•SQLWays ウィザード - Data オプション
       
[DDL] サブセクション 
このサブセクションではDDLとSQLスクリプトの生成の調整について説明します 。 
•   GENERATE_DROP_TABLE - Yes が指定された場合、DROP TABLE ステートメントは各 CREATE TABLE ステートメントの前に生成されます。デフォルト値は Noです。設定可能な値 - Yes, No。 
•   DROP_TABLE_CASCADE_CONSTRAINTS - Yes が指定された場合、CASCADE CONSTRAINTS オプションが DROP TABLE ステートメントに生成されます。現在このオプションは Oracle のみサポート。詳しい情報はテーブルのドロップを参照。 
このオプションはターゲットデータベースが Oracle で GENERATE_DROP_TABLE がYesに設定された場合のみ有効です。デフォルト値は Noです。  
•   GENERATE_DROP_INDEX - Yes が指定された場合、 DROP INDEX ステートメントは各 CREATE INDEX ステートメントの前に生成されます。デフォルト値はNoです。設定可能な値は - Yes, Noです。 
このオプションはテーブルの再作成を行わず、インデックス生成のスクリプトが再実行される場合に便利です。 
•   OUTSCHEMA -  /OSN オプション (出力スキーマ名) 
•   EMPTY_SCHEMA -  /EMPS オプション。設定可能な値 - Yes, No 
•   COLUMN_NAME_CASE - このオプションはSQLステートメントのカラム名の大文字小文字を指定します。設定可能な値 - Upper, Lower。もし、 no の値が指定された場合、カラム名の大文字小文字は変更されずソースデータベースから取得したものが使用されます。  
•   USE_CONSTRAINT_NAMES - Yes が指定された場合、ソースデータベースの制約名がDDLスクリプトの生成で用いられます。そうでない場合、制約名はスキップされます。デフォルト値はNoです。設定可能な値 - Yes, No。 
•   PK_COLS_NOTNULL - このオプションは カラムをプライマリキーにするCREATE TABLEステートメントにNOT NULL 制約を強制します。デフォルト値は Yesです。設定可能な値 - Yes, No。 
いくつかのデータベース (Oracle, Sybase, Access 等) では、NOT NULL制約付きのプライマリキーカラムを指定せずテーブルを生成し、後でプライマリキーを追加する時にカラムをNOT NULLに変更する事ができます。他のデータベース (IBM DB2, Microsoft SQL Server, MySQL 等) では NOT NULL制約付きのプライマリキーカラムを先に生成する必要があります。  
デフォルト値は Yes (全てのプライマリキーカラムは NOT NULL 制約付きで生成)。設定可能な値 - Yes, No。 
•   CONVERT_IDENTITY_COLUMNS - Yes が指定された場合、SQLWays はカラムの identity 属性を変換します。そうでない場合、SQLWays は identity 属性を抽出しません。デフォルト値は Yesです。設定可能な値 - Yes, No。 
•  REMOVE_NOTNULL_EXCEPT_PK - Yes が指定された場合、ターゲットデータベースのプライマリキー以外のカラムの NOT NULL 制約は削除されます。デフォルト値は Noです。設定可能な値 - Yes, No。  
Identity カラムは一般的にテーブルのユニークなロー識別子としてプライマリキー制約と共に使用されます。  
•   INSERT_COMMIT_COUNT - このオプションは INS 出力形式にのみ有効で、指定された回数のINSERTステートメント実行後にCOMMITステートメントを生成するのに使われます。デフォルト値は 0 (COMMITは生成しない)。 
383 SQLWays Documentation Copyright © 1999-2015 
•STATEMENT_DELIMITER -  /STDEL オプション (ステートメント終端文字)
•STATISTICS_STATEMENTS - このオプションはテーブルインデクス用のDDLステートメントで統計情報を計算するステートメントを生成するか否かを指定します。デフォルト値は Yesです。設定可能な値 - Yes, No。現在 SQLWays が統計情報作成のステートメントを生成するのは IBM DB2 のみです。
•PK_UNIQUE_INDEXES - このオプションはプライマリキーにユニーク制約とインデクスを作成するかを指定します。デフォルト値は Noです。 これはインデクスのスクリプトとユニーク制約が 作成されない事を意味します。この場合、データベースはデータベースが暗黙的なユニークインデクスとユニーク制約を生成します。
プライマリキーとユニーク制約と同じ定義のユニークインデクスが先に作成されていた場合、データベースはそれらのインデクスをプライマリキーとユニーク制約として使用します。
PK_UNIQUE_INDEXES=ALWAYS が指定された場合、プライマリおよびユニーク制約のインデクススクリプトは常に生成されます。これはプライマリキーとユニーク制約を作成する前にインデクスを作るのに使われます。
•REPLACE_NOT_ALLOWED_CHARS – このオプションはターゲットデータベースでのNOT ALLOWED 文字を置き換える文字または文字列を指定します。
ソースデータベースで識別子 (table and column names など) として使用可能な文字がターゲットデータベースでは使用できない場合があります。
例えば、Microsoft SQL Serverでは @ を識別子に使用できますが、Oracle では使用できません。 
もしこのオプションになにも値が指定されず、"remove_not_allowed_chars=no"である場合、識別子に使用不可な文字は全てターゲットデータベースで使用可能になります。
•REMOVE_NOT_ALLOWED_CHARS - このオプションは replace_not_allowed_chars オプションと似ています。但し、このオプションはターゲットデータベースでの識別子として使用不可の文字を削除します。
Yes が指定された場合、全ての使用不可文字はターゲットデータベースの識別子から削除されます。 
デフォルト値は Yes です。設定可能な値 - Yes, No。 
•REPLACE_NOT_ALLOWED_CHARS_FPOS - このオプションはターゲットデータベースの識別子の先頭の使用不可文字を置換する文字または文字列を指定します。
ソースデータベースの識別子の先頭文字がターゲットデータベースでは許容されない事があります。
例えば、Microsoft SQL Server の識別子の先頭に _ (underscore) を使用できますが、Oracle の識別子は不可です。  
このオプションになにも指定されないか "remove_not_allowed_chars_fpos=no"である場合、識別子の先頭の使用不可文字はターゲットデータベースでもそのまま残されます。
•REMOVE_NOT_ALLOWED_CHARS_FPOS - このオプションは、replace_not_allowed_chars_fpos オプションと似ていますが、これによりターゲットデータベースで先頭の使用不可文字を削除することができます。
Yes が指定された場合、識別子の先頭の使用不可文字をターゲットデータベースでは削除されます。 
デフォルト値は Yes です。設定可能な値は - Yes, No です。  
•_NAMES_EXCEEDING_MAX_LEN - 各データベースには識別子の長さの制限があります。例えば、SQL Server の識別子の最大長は 128 文字、Oracle は 30 です。SQL Server から Oracleへ移行する際、テーブル名が30文字を超える場合にエラーとなります。
      
Yes が指定された場合、SQLWays はターゲットデータベースの識別子の最大長を超える識別子を切り詰めます。もし切り詰めた識別子の名前が重複した場合、SQLWays は識別子の最後の文字 を "2" から始まる昇順の数字で置き換えます（最初の識別子以降）。 
  例えば、もしSQLWaysが識別子の切り捨てを行った際、"home_phone_numbers" のような２つの同一の識別子名が発生した場合、"home_phone_numbers" および "home_phone_number2" に変換されます。 
  No が指定された場合、SQLWays はターゲットデータベースの最大長を超える識別子の切り捨ては行いません。  
 デフォルト値はYes です。設定可能な値は - Yes, No です。  
•   TRIM_RULE_ALPHANUM_ONLY - このオプションは "trim_names_exceeding_max_len=yes" オプションと一緒に使用されます。 
Yes が指定され、識別子がターゲットデータベースの識別子の最大長を超える場合、SQLWays は先ず最初に非英数文字を全て削除します。それでも識別子が最大長を超えている場合には切り詰めを行います。もし、No が指定された場合、SQLWays は非英数文字を削除せずすぐに切り詰めを行います。   例えば、もし Yes が指定された場合、"regional_customer_account_number#" (33 文字) のようなSQL Server の識別子は "regionalcustomeraccountnumber" (29 文字) に変換されます。   デフォルト値は Yes です。設定可能な値は - Yes, Noです。  
•   REPLACE_RESERVED_WORDS - このオプションはターゲットデータベースの予約語であるソースデータベースの識別
子を変更するために使用されます。このオプションは予約語の置換のテンプレートを指定します。 
例えば、 %RWORD%_ が指定された場合、全ての予約語の右側にアンダースコア文字が追加されます。 
このテンプレートのデフォルト値は %RWORD% です。この場合、予約語は変更されず、ターゲットデータベースのSQLステートメントの中で区切り文字で囲まれて表現されます。区切り文字はデータベースにより異なります。区切り識別子 を参照してください。 
•   ANSI_QUOTED_IDENTIFIERS - ANSI_QUOTED_IDENTIFIER が ONの場合、識別子は二重引用符で囲む事ができ、リテラルは単一引用符で囲む必要があります。  
ANSI_QUOTED_IDENTIFIER が OFFの場合、識別子を引用符で囲むことはできず、Transact-SQL の識別子のルールに従う必要があります。リテラルは単一または二重引用符で囲むことができます。  
ANSI_QUOTED_IDENTIFIER のデフォルト値は ONです。このオプションは MSSQL および Sybase ASE で有効です。   •   CONVERT_INDEXES - インデクスを変換するか否かを指定します。デフォルト値は Allであり、全てのインデク
スが変換されます。設定可能な値は unique および noneです。 
•   VAR_PREFIX - SQL Server の (@) のようにソースデータベースで変数を識別する特殊なプレフィクスがある場合、それを置き換える文字を指定します。デフォルトは v_ です。  
•   REMOVE_VAR_PREFIX - 変数のプレフィクス(SQL Server および Sybaseの'@')を削除するか否かを指定します。デフォルト値は 'no' です。 
•   TARGET_FILES_GROUPING - SCHEMA のみの変換が行われた場合、このオプションは変換されたSQLをどのように格納するかを指定します。デフォルトでは各オブジェクトのSQLは夫々のファイルに格納されます。ALL - を指定すると全てのオブジェクトはひとつのファイルに格納されます。デフォルトは OBJECT です。 
•   REMOVE_SPECIAL_COLUMNS - このオプションは MSSQL から Oracle への移行の為に用意されました。もし、このオプションが "yes" （デフォルトは"no"）に設定された場合、TIMESTAMPカラムはターゲットテーブルから削除されます（変換されません）。  
      
•   START_VALUE_EXTRACTION_WITH_SEQUENCE_INCREMENT - このオプションは DB2 から Oracle への移行のために用意されました。もし、このオプションが "yes" に設定された場合、ソースの現在のシーケンス番号に INCREMENT BY 句で指定された値を加算したものをターゲットのシーケンスの開始番号に設定します。  ソース： CREATE SEQUENCE ORDER_SEQ START WITH 1 INCREMENT BY 2 NO MAXVALUE NO CYCLE CACHE 24# (現在のシーケンス値は 3)  変換後： CREATE SEQUENCE ORDER_SEQ INCREMENT BY 2 START WITH 5 MAXVALUE 2147483647 MINVALUE 1 NOCYCLE CACHE 24 NOORDER;  もし、このオプションが "no" (デフォルト) に設定された場合  変換後： CREATE SEQUENCE ORDER_SEQ INCREMENT BY 2 START WITH 1 MAXVALUE 2147483647 MINVALUE 1 NOCYCLE CACHE 24 NOORDER;  
•   EXPORT_CONSTRAINTS_FOR_QUERIES - このオプションが "yes" (デフォルト) に設定され、オブジェクト（テーブル）がクエリで変換対象として選択された場合、オブジェクト（テーブル）自身がエクスポートされる時、定義されている制約（プライマリ、外部キーなど）も一緒にエクスポートされます。しかし、もしこのオプションを "no" に設定すると、オブジェクト（テーブル）は制約の定義なしで変換されます。 
•   CONVERT_DATABASE_TO_SCHEMA - このオプションは Sybase ASE から Oracle への変換の為に用意されました。デフォルト値は "no" です。もし、このオプションが "yes" に設定された場合、ソース DB 名がターゲットのスキーマ名として使用されます。例：ソース：schema1.table1、ターゲット： db1.table1  
•   cd2s_sch_to_obj_name - このオプションは Sybase ASE から DB2 への移行のために用意されました。このオプションは CONVERT_DATABASE_TO_SCHEMA オプションが "yes" に設定された時のみに有効です。cd2s_sch_to_obj_name オプションのデフォルト値は "no" です。  cd2s_sch_to_obj_name=yes ならば、以下の例に示すように、スキーマ名がオブジェクト名に追加されます  ソース： db1.sch1.tab2  変換後： db1.sch1_tab2   cd2s_sch_to_obj_name=no ならば、スキーマ名は省略されます：  ソース： db1.sch1.tab2  変換後： db1.tab2  
SQLWays ウィザードでDDLオプションを指定するには： 
•   SQLWays ウィザード - DDL オプション 
386 SQLWays Documentation Copyright © 1999-2015 
[Windows] サブセクション 
このサブセクションでは Microsoft Windows 向けに生成されるコマンドファイルの調整について説明します。SQLWays はターゲットデータベースへデータ構造とデータをインポートするコマンドファイルを生成します。
•GCMD_AFTER_IMP_CMD - 各データベースオブジェクト（テーブル、ビューなど）をインポートした後に実行されるコマンドを指定します。このコマンドは general コマンドファイルについてのみ使用されます。 
SQLWays は general コマンドファイルにより、多数のデータベースオブジェクト（テーブル、ビューなど）のインポートを一度で実行できるようにしています。詳しくは /GCMD オプションを参照。  
general コマンドファイルは各データベースオブジェクト毎に CALL コマンドでコマンドファイルを呼び出します。GCMD_AFTER_IMP_CMD オプションは、各CALLコマンドの後に置かれるコマンドを指定する事ができます。 
例えば、no が GCMD_AFTER_IMP_CMD オプションに指定された場合、general コマンドファイルには CALL コマンドのみが含まれます：
call table1.cmd call table2.cmd call table3.cmd call view1.cmd call view2.cmd 
例えば、GCMD_AFTER_IMP_CMD=pause と指定すると、general コマンドファイルは以下の様になります： call table1.cmd pause call table2.cmd pause call table3.cmd pause call view1.cmd pause call view2.cmd pause 
       
[Unix] サブセクション 
このサブセクションでは Unix 向けに生成されるシェルスクリプトの調整について説明します。SQLWaysはターゲットデータベースへデータベース構造とデータをインポートするシェルスクリプトを生成します。 
•   SHELL_LOCATION - Unix システムでインポートスクリプトを実行する Unix シェルを指定します。インポートを Unix システムで実行すると指定した場合、SQLWays はデータベース構造とデータのインポートを行う Bourne シェルスクリプトを生成します。  
デフォルトでは、SQLWays はシェルスクリプトを /bin/sh で実行する様に指定します。このオプションにより、別のシェルの場所を指定することができます、例えば /usr/bin/sh   このオプションはインポートが Unix システムで行われない場合は無効です。 
388 SQLWays Documentation Copyright © 1999-2015 
[Oracle] サブセクション 
このサブセクションでは、Oracle がターゲットデータベースである場合の生成されるスクリプトの調整とソースデータベースの場合の属性設定について説明します。
•BIN - SQL Plus や SQL Loader といった Oracle ユーティリティが存在するディレクトリを指定します。
•SQLLOADER - Oracle SQL Loader の実行モジュール名を入力します。デフォルトの名前は sqlldr.exe です。
•SQLPLUS - Oracle SQL Plus の実行モジュールを指定します。デフォルトの名前は sqlplus.exe です。
•USER - Oracle SQL Plus や SQL Loader 向けに生成されるスクリプトで使用されるユーザ名。
•PWD - Oracle SQL Plus や SQL Loader 向けに生成されるスクリプトで使用されるユーザのパスワード。
•SERVICE_NAME - Oracle SQL Plus や SQL Loader 向けに生成されるスクリプトで使用される Oracle Net プロトコルのサービス名。
•SQLPLUS_EXIT_CMD - Yes が選択された場合、SQL Plus EXIT コマンドが DDL スクリプトの末尾に生成されます。これにより複数のDDL スクリプトをバッチモードで実行する事が可能になります。 設定可能な値 - Yes, No。デフォルト値はYes です。 
•SQLPLUS_TO_DATE - Yes が設定された場合、対応する日付型の TO_DATE 関数がSQL Plus 用の INSERT ステートメントの DATE 型カラムに設定されます。これにより日付フォーマットがデフォルトの形式と異なるDATE型カラムへデータを追加する事が出来ます。
No が選択された場合、 TO_DATE 関数は SQL INSERT ステートメントに生成されません。設定可能な値 - Yes, No。デフォルト値は Yes です。 
•DIRECT - Oracle SQL Loader の実行方法が対話型かダイレクトパスかを指定します。設定可能な値 - Yes, No。Yes はダイレクトパスロードを示します。No は対話型パスロードを指定します。デフォルト値は No です。 
•LOAD_OPTION - SQL Loader 制御ファイルに生成されるローディングオプションを指定します。設定可能な値 -Insert, Append, Replace, Truncate。デフォルト値は Insert です。
•DATE - テキストファイルの日付（year, month, day) データを DATE カラムにロードするためのSQL Loader 制御ファイルのフォーマット文字列を指定します。デフォルトのフォーマットは "YYYY-MM-DD" です。 
[Data] サブセクション の DATE_FORMAT オプションが指定されている場合はこのDATEオプションの設定は上書きされます。 
•TIME - テキストファイルの時刻（hours, munutes, seconds) データを DATE カラムにロードするためのSQL Loader 制御ファイルのフォーマット文字列を指定します。デフォルトのフォーマットは "HH24:MI:SS" です。 
[Data] サブセクションの TIME_FORMAT オプションが設定されている場合はこのTIMEオプションの設定は上書きされます。 
•TIMESTAMP - テキストファイルのタイムスタンプ（year, month, day, hours, munutes, seconds) データを DATE カラムにロードするためのSQL Loader 制御ファイルのフォーマット文字列を指定します。デフォルトのフォーマットは "YYYY-MM-DD HH24:MI:SS" です。
[Data] サブセクションの DATETIME_FORMAT オプションが設定されている場合はこのTIMESTAMPオプションの設定は上書きされます。
•TIMESTAMP9i - テキストファイルの Oracle9i タイムスタンプ（year, month, day, hours, munutes, seconds, 秒の小数点部) データを ロードするためのSQL Loader 制御ファイルのフォーマット文字列を指定します。デフォルトのフォーマットは "YYYY-MM-DD HH24:MI:SS.FF" です。
      
•   FIXFMT_DECODE_NULLCHAR - SQLWays SQL Loader の制御ファイルに DECODE 関数を生成し、固定長テキストファイルの CHAR NOT NULL カラムへの NULLデータを空白に変換します。指定可能な値 - Yes, No。デフォルト値は No です。 
もしテキストファイルが固定長フォーマットで、空白のフィールドを CHAR NOT NULL カラムにロードする場合には、SQL Loader は空白をNULLとして扱うため、DECODE 関数を使用しなければなりません。 このオプションを Yes に設定すると、SQLWays は NULL を空白に変換する DECODE 関数を生成します。   SQLWays ウィザードで Oracle のオプションを指定するには： •   SQLWays ウィザード - Oracle Advanced オプション 
390 SQLWays Documentation Copyright © 1999-2015 
[IBM DB2] サブセクション 
このサブセクションでは、IBM DB2 がターゲットデータベースの場合に生成されるスクリプトの調整とソースデータベースの場合の属性の設定について説明します。
•BIN - CLP, IMPORT, LOAD のような IBM DB2 ユーティリティが存在するディレクトリを指定します。
•DATABASE - IBM DB2 ユーティリティ用に生成されるスクリプトで使用されるデータベース名を指定します
•USER - IBM DB2 ユーティリティ用に生成されるスクリプトで使用されるユーザ名を指定します
•PWD - IBM DB2 ユーティリティ用に生成されるスクリプトで使用されるユーザのパスワードを指定します
•USE_LOAD_COMMAND - Yes が指定された場合、IBM DB2 LOAD コマンドが IBM DB2 データベースへのデータの投入に使用されます。指定可能な値 - Yes, No です。デフォルト値は No であり、IBM DB2 IMPORT コマンドが使用されます。
•LOAD_FROM_CLIENT - Yes が指定された場合、IBM DB2 LOAD コマンドに CLIENT オプションが指定されます。このオプションはデータがリモートクライアント上に存在する事を示します。それ以外の場合、データは IBM DB2 サーバ上に存在します。Yes が指定された場合、IBM DB2 LOAD コマンドに CLIENT オプションが指定されます。このオプションはデータがリモートクライアント上に存在する事を示します。それ以外の場合、データは IBM DB2 サーバ上に存在します。
指定可能な値 - Yes, No です。デフォルト値は No です。 LOAD コマンドの CLIENT オプションは IBM DB2 7.1 以降で有効です。 
•LOAD_NONRECOVERABLE - Yes が指定された場合、NONRECOVERABLE オプションが IBM DB2 LOAD コマンドに追加されます。このオプションは、ロードトランザクションを回復不能としてマークし、それ以降にロールフォワードを実行しても回復できなくなる事を指定します。
このオプションを指定すると、テーブルスペースはロード操作後にバックアップ保留状態になりません。
指定可能な値 - Yes, No です。デフォルト値は No です。  
•IMPORT_OPTION - IMPORT ユーティリティが実行するモードを選択します。選択可能なモードは INSERT (ターゲットテーブルの既存データを変更せずデータを追加)、INSERT_UPDATE (ターゲットテーブルへデータを追加、プライマリキーが一致する既存データは更新を行う）および REPLACE (ターゲットテーブルのtruncateにより既存データを削除し、インポート対象データを追加。テーブルおよびインデクス定義は変更しない) です。デフォルトのモードは INSERT です。
•LOAD_OPTION - LOAD ユーティリティが実行するモードを選択します。選択可能なモードは INSERT (ターゲットテーブルの既存データを変更せずデータを追加) および REPLACE (ターゲットテーブルの既存データをすべて削除し、ロード対象データを追加。テーブルおよびインデクス定義は変更しない) です。デフォルトのモードは INSERTです。
•MODIFIEDBY_OPTIONS - IBM DB2 IMPORT および LOAD ユーティリティのオプションへの追加オプションを指定します。
SQLWaysは、文字やカラム区切りなどのオプションを IBM DB2 IMPORT/LOAD スクリプトに追加します。modified by option として他のオプションを指定したい場合にこのオプションを使用します。
例えば、modifiedby_options=usedefaults delprioritychar を設定すると、IBM DB2 IMPORT/LOAD ユーティリティ向けの各スクリプトにこれらのオプションが追加されます。
•TIMESTAMP_FORMAT - ターゲットデータベースが IBM DB2 であるテキストファイルの中のタイムスタンプデータ型カラムのフォーマットを選択します。選択可能な形式は IBM DB2, ISO です。
デフォルト値は IBM DB2 であり、タイムスタンプのIBM DB2 ネイティブフォーマットです。IBM DB2 ネイティブフォーマットは YYYY-MM-DD-HH.MI.SS.FFFFFF です。 IBM DB2 の IMPORT コマンドが二重引用符で囲まれないタイムスタンプ値（タブ区切り形式など）をインポートする場合にはこの形式でなければなりません。
もし ISO が指定された場合、 ISO 形式のタイムスタンプが使用されます。 ISO 形式は YYYY-MM-DD HH:MI:SS.FFFFFF です。IBM DB2 の IMPORT コマンドは、ISO 形式のタイムスタンプ値を二重引用符で囲む（CSV 出力形式など）ことでインポートする事ができます。
       
注： このオプションは DATETIME_FORMAT オプション([DATA] サブセクションを参照) に値が設定された場合は無視されます。   例えば、DATETIME_DATATYPE=DATE が指定された場合、datetime データ型は IBM DB2 の DATE 型に変換されます。  
•  TABLESPACE - テーブルが作成されるテーブルスペース名を入力します。指定するテーブルスペースは、存在する REGULAR テーブルスペースでなければなりません。他のテーブルスペースが指定されなければ全てのテーブルオブジェクトはこのテーブルスペースに格納さえｒます。デフォルトのテーブルスペースは USERSPACE1 です。 
•   INDEX_TABLESPACE - テーブルのインデクスが作成されるテーブルスペースを指定します。指定するテーブルスペースは、存在する REGULAR DMS テーブルスペースでなければなりません。 
•   LONG_TABLESPACE - ロングカラムの値 (LONG VARCHAR, LONG VARGRAPHIC, LOB データ型) が格納されるテーブルスペースを指定します。指定するテーブルスペースは、存在する LONG DMS テーブルスペースでなければなりません。 
•   SELECT_EXACT_ORDER- このオプションは Sybase ASE から DB2 への移行において、ソースデータベースと同一のローの出力順にするためのものです。設定可能な値は 'yes' および 'no' (デフォルト) です。 もし 'yes' に設定すると、SQLWays は Sybase が暗黙的に行う全てのカラムによるソートと同様になるように SELECT句で指定された全てのカラム名を ORDER BY 句に追加します。 
•   DECLARE_TEMP2CREATE_TEMP- このオプションは Sybase ASE から DB2 への移行用に用意されました。設定可能な値は 'yes' または 'no' (デフォルト) です。 もし 'yes' に設定すると、SQLWays は Sybase の SELECT INTO tempdb および CREATE TABLE tempdb を DB2 CREATE GLOBAL TEMPORARY TABLE に変換します。それ以外の場合、これらのステートメントは DECLARE GLOBAL TEMPORARY TABLE に変換されます。 
•   DYNAMIC_RESULT_SETS- このオプションは DB2 がターゲットデータベースの場合に用意されました。設定可能な値は 'yes' および 'no' (デフォルト) です。 'yes' に設定された場合、SQLWays は CREATE PROCEDURE ステートメントを DYNAMIC RESULT SETS 句付きの DB2 プロシージャに変換します。 
•   DYNAMIC_RESULT_SETS_VALUE- このオプションは DYNAMIC_RESULT_SETS オプションと共に使用されます。デフォルト値は 100 です。 
SQLWays ウィザード で IBM DB2 オプションを指定するには： 
•   SQLWays ウィザード - IBM DB2 Advanced オプション 
392 SQLWays Documentation Copyright © 1999-2015 
[MSSQL] サブセクション 
このサブセクションでは、Microsoft SQL Server がターゲットデータベースの場合に生成されるスクリプトの調整とソースデータベースの場合のプロパティ設定について説明します。
•BIN - BCP や ISQL といった Microsoft SQL Server のユーティリティが存在するディレクトリを指定
•SERVER_NAME - BCP や ISQL ユーティリティ向けに生成されるスクリプトに記述されるサーバ名を指定 (BCPのパラメータ-S) 
•DATABASE - BCP や ISQL ユーティリティ向けに生成されるスクリプトに記述されるデータベース名を指定
•USER - BCP や ISQL ユーティリティ向けに生成されるスクリプトに記述されるユーザ名を指定 (BCPのパラメータ -U)。このオプションを使用するには、TRUSTED_CONNECTION (下記参照) オプションが No に設定されていなければなりません。 
•PWD - BCP や ISQL ユーティリティ向けに生成されるスクリプトに記述されるユーザのパスワードを指定 (BCPのパラメータ -P )。このオプションを使用するには、TRUSTED_CONNECTION (下記参照) オプションが No に設定されていなければなりません。 
•TRUSTED_CONNECTION - BCP や ISQL ユーティリティ向けに生成されるスクリプトでSQL Serverへの接続に信頼関係接続を使用するかを指定します (BCPのパラメータ -T および ISQLの -E )。 このオプションが Yes に設定された場合、ネットワークユーザの認証情報が使用され、ユーザ名／パスワードは不要となります。設定可能な値 - Yes, No。デフォルト値は Noです。
• MAX_ERRORS - BCP ユーティリティが中断するまでの最大エラー数を指定します。 BCP がコピーできなかった各ロー毎のエラーは無視され、ひとつのエラーとして報告されます (BCPのパラメータ -m )。デフォルト値は 10 です。
•CODE_PAGE - BCP ユーティリティに対してデータファイルのコードページを指定します。(BCPのパラメータ -C )。CODE_PAGE オプションに指定可能な値は以下の通り： 
•ACP - ANSI/Microsoft Windows (ISO 1252).
•OEM - クライアントのデフォルトコードページ。BCP -C が指定されない場合のデフォルト•RAW - コードページの変換を行わない
•<value> - コードページ番号を指定。例 437 
•USE_CONVERT_CHAR_TO_VARCHAR- CHAR の 変換 先 を指 定し ま す。 'yes' が指 定 され  CHAR の 長さ がCONVERT_CHAR_TO_VARCHAR オプションで指定された値と等しいか大きな場合、CHAR データ型は VARCHAR に変換されます。'no' (デフォルト) が指定された場合、長さに関係なく CHAR は CHAR として変換されます。 
•CONVERT_CHAR_TO_VARCHAR- VARCHARに変換されるCHARデータの長さを指定。このオプションはUSE_CONVERT_CHAR_TO_VARCHAR オプションが 'yes' のときに有効です。 
       
[Sybase] サブセクション 
このサブセクションでは、Sybase がターゲットデータベースの場合に生成されるスクリプトの調整とソースデータベースの場合のプロパティ設定について説明します。  
•   BIN - BCP や ISQL といった Sybase ユーティリティの存在するディレクトリを指定します 
•   SERVER_NAME - BCP や ISQL ユーティリティ向けに生成されるスクリプトに記述されるサーバ名を指定 (パラメータ -S)  
•   DATABASE - BCP や ISQL ユーティリティ向けに生成されるスクリプトに記述されるデータベース名を指定  
•   USER - BCP や ISQL ユーティリティ向けに生成されるスクリプトに記述されるユーザ名を指定 (パラメータ -U)  
•   PWD - BCP や ISQL ユーティリティ向けに生成されるスクリプトに記述されるユーザのパスワードを指定 (パラメータ -P)  
[MySQL] サブセクション 
394 SQLWays Documentation Copyright © 1999-2015 
このサブセクションでは MySQL がターゲットデータベースの場合に生成されるスクリプトの調整とソースデータベースの場合のプロパティ設定について説明します。
•BIN - MySQL ユーティリティが存在するディレクトリを指定します
•HOST - ターゲットの MySQL データベースが存在するリモートホスト名を指定します
•DATABASE - MySQL用に生成されるスクリプトに記述されるデータベース名を指定します
•USER - MySQL用に生成されるスクリプトに記述されるユーザ名を指定します
•PWD - MySQL用に生成されるスクリプトに記述されるユーザのパスワードを指定します
•TABLE_TYPE - MySQLデータベースのテーブルを生成する際のテーブルタイプを指定します。MySQL は２つの異なるテーブルをサポートしています： トランザクションセーフテーブル (InnoDB および BDB) と 非トランザクションセーフテーブル (HEAP, ISAM, MERGE, および MyISAM)。  
例えば、InnoDB が選択された場合、MySQLのCREATE TABLE ステートメントには TYPE=InnoDB 句が追加されます。 
•IMPORT_FROM_CLIENT - Yes が指定された場合、MySQL LOAD DATA INFILE コマンドにはLOCAL キーワードが追加されます。 LOCAL が指定された場合、データファイルはクライアントホスト上に配置する事ができます。
No が指定された場合、LOCAL キーワードは追加されず、データファイルはインポート実行前にMySQL サーバに配置する必要があります。
設定可能な値 - Yes, No。デフォルト値は Yes です。 
注： MySQL 4.0.x での LOCAL キーワードの使用に関して問題があります。LOCAL keyword - The used command is not allowed with this MySQL version を参照。 
•DATA_LOAD_OPTION - Replace が指定された場合、対象テーブルにプライマリまたはユニークキーが存在する既存のローは更新され、プライマリキーが存在しないローは新たに追加されます。もし Ignore が指定された場合、対象テーブルにプライマリまたはユニークキーが合致する既存のローは更新されません。プライマリまたはユニークキーが存在しないローは追加されます。
SQLWays ウィザードで MySQL オプションを指定するには： 
•SQLWays ウィザード - MySQL Advanced オプション
[Pervasive] サブセクション 
このサブセクションでは、Pervasive.SQL がターゲットデータベースの場合に生成されるスクリプトの調整とソースデータベースの場合の各種プロパティ設定について説明します。 
•   BIN - BUTILのような Pervasive.SQL ユーティリティが存在するディレクトリを指定します 。 
•   DATA_DIR - データベースのデータファイル (.mkd files) が存在するディレクトリを指定します。このオプションは BUTIL ユーティリティ向けのものです。 
•   DATABASE - Pervasive.SQL 用のスクリプトに記述されるデータベース名 (ODBC エイリアス名) を指定  
•   USER - Pervasive.SQL 用のスクリプトに記述されるユーザ名を指定 
•   PWD - Pervasive.SQL 用のスクリプトに記述されるユーザのパスワードを指定 
[Formatting] サブセクション 
このサブセクションは、Sybase ASE から DB2 への変換において、変換されたスクリプトに対し可読性を高めるためのフォーマッティングについて説明します。  
•   FORMATTING - フォーマッティングを適用するか否かを指定します。指定可能な値は 'yes' および 'no' (デフォルト)です。  
•   LENGTH- １行の最大シンボル数を指定します 
•   CAPS - 全てのキーワードを大文字に変換するかを指定します。設定可能な値は 'yes' および 'no' (デフォルト)です。  
•   EMPTY_LINE4DML - 各DMLステートメントの後に空白行を追加するか否かを指定します。設定可能な値は 'yes' および 'no' (デフォルト)です。  
コマンドラインのヒント 
397 SQLWays Documentation Copyright © 1999-2015 
•リターンコード
•OS 特殊文字の使用
リターンコード 
エクスポートが成功した場合、SQLWays のリターンコードは 0 です。それ以外では、リターンコードは -1 です。この機能はバッチファイルで利用する事ができます。 
例： @echo off cls SQLWays /d=datasource /u=user /p=pwd /t=table if errorlevel 0 goto ok echo. echo Converting error goto ex :ok echo. echo no errors :ex 
SQLWays から 1 を返すことができます。これは /NSTOP オプションが指定されており、最後のオペレーションは成功したが途中にエラー (例えば、あるテーブルの処理が失敗）があったことを意味します。  
OS 特殊文字の使用 
399 SQLWays Documentation Copyright © 1999-2015 
•Microsoft Windows は %,| のような文字を OS 特殊文字として翻訳します。そのため、もしそれらの文字をコマンドラインまたはバッチファイルで使用したい場合、それらの文字を二つ続けて書きます
以下のコマンドをSQLWays /d=dsn /s=select * from t1 where field1 like '%123%' 
このように記述します：SQLWays /d=dsn /s=select * from t1 where field1 like '%%123%%' 
• Microsoft Windows は > 文字をリダイレクト文字として扱います。もしこの文字を SELECT ステートメントで使用したい場合、ステートメントを二重引用符で囲まなければなりません：
 SQLWays /d=dsn /s="select * from t1 where field2 > 123" 
       
ODBC データソースのセットアップ 
ODBC  (Open Database Connectivity) はリレーショナルデータベースのデータアクセスに使用される標準的なアプリケーションプログラミングインターフェイス (API) です。全ての一般的なデータベースにODBCで接続できるようデータベースベンダやサードパーティベンダによりODBCドライバが提供されています。SQLWays はソースデータベースへのアクセスに ODBC インターフェイスを使用します。   ODBCでデータベースにアクセスするには、データソースを作成し、特定のODBC ドライバとデータベースの関連付けとデータベースへの接続情報の設定を行います。   ODBC データソースの作成はコントロールパネルの管理ツール配下にあるデータソース (ODBC) アプリケーションのODBC データソース アドミニストレーター (ドライバの設定についてはODBC データソースアドミニストレーターのヘルプを参照） で行うか、SQLWays ウィザードの Choose a Source Database ページで New をクリックします。   データソースの情報はODBCドライバを使用してアクセスするそれぞれのデータベース毎に構成する必要があります。   以下のステップではODBCドライバを使ったデータソースの作成および構成の方法を記述します。 
•   ODBC データソースアドミニストレーターを実行 
•   新たに作成または変更する ODBC データソースのタイプを選択。ODBC データソース名 (DSN) は以下のいずれかのタイプです： 
•File - 同じODBCドライバをインストールした全てのユーザで共有される、ファイルに格納されたデータソース。このデータソースは特定ユーザの専用またはあるコンピュータのローカルである必要はありません 
•User - あるコンピュータのローカルでありデータソースを作成したユーザのみがアクセスできるデータソース •System - あるコンピュータのローカルではあるが特定ユーザ専用でないデータソース。適切な権限を持つユーザはシステムDSNにアクセスすることができます。システムデータソースはコンピュータの全てのユーザ（Windows NT サービスを含む）から参照可能です 
User および System データソースはレジストリに格納されます。File データソースは拡張子 dsn を持つファイルとして格納されます。File DSN はネットワークドライブを含む任意のファイルシステム上に保存する事ができます。デフォルトでは、File DSN は以下の場所に格納されます： 
C:\Program Files\Common Files\ODBC\Data Sources 
•  ドライバの一覧から対象データベース用のドライバを選択し、Advanced File DSN Creation Settings (ドライバ固有キーワード) を入力後、「次へ」 ボタンを押下 
•   ODBC データソースファイル の名前と場所を指定し、次へボタンを押下 
•   データソースの構成情報を確認し、Finishを押下 
•   Sybase Adaptive Server Anywhere への ODBC 接続の構成  
•   Sybase Adaptive Server Enterpriseへの ODBC 接続の構成  
•   MySQL へのMyODBCによる接続の構成 
       
Sybase Adaptive Server AnywhereへのODBC接続の構成 
このセクションでは、Adaptive Server Anywhere のODBC Configuration Options ダイアログとODBCデータソースの接続パラメータ設定について説明します。  
•   Sybase Adaptive Server Anywhere ドライバ (ASA version 6.x) 
•   Sybase Adaptive Server IQ ドライバ (ASIQ version 12.x) 
•   Sybase Adaptive Server Enterprise ドライバ (ASE versions 11.x および 12.0) 
       
Sybase Adaptive Server Anywhere ドライバ 
このセクションでは、Adaptive Server Anywhere (以下 'ASA') バージョン 6.0.1 (ドライババージョン 6.0)のODBCドライバの接続情報について説明します。クライアントアプリケーションはこのドライバで ASA サーバに接続します。Adaptive Server Enterprise のODBCドライバとは異なり、ASA ドライバはODBCドライバと同じマシン上に Open Client をインストールする必要はありません。Adaptive Server Enterprise ドライバに関する詳しい情報は、Sybase Adaptive Server Enterprise ドライバを参照。 
ODBC Configuration ダイアログは 6 つのタブで構成されています： 
•   ODBC タブ 
•   Login タブ 
•   Database タブ 
•   Network タブ 
•   Advanced タブ 
•   Certicom Encryption Options ダイアログ 
403 SQLWays Documentation Copyright © 1999-2015 
ODBC Sybase ASA Driver Setup ダイアログ： ODBC タブ 
以下にドライバ構成のODBC タブを示します。ここに構成対象のODBC データソース (DSN) の名前が示されます。このタブにはTest Connection ボタンも存在します。このボタンにより、DSNの構成を終了してドライバ構成ユーティリティを終了させる前に、ASA への接続をテストすることができます。以下の画面では ASA ネットワークサーバのインストールと共に作成された 0ASA ODBC DSN の例を表示します。 
•Data source name ボックスで、この ODBC データソース名を識別する名前を指定します。ここには分かり易い名前 (空白の使用は不可) を使用することができます が、接続文字列でこの名前を入力するため出来るだけ短い名前の使用を推奨します
•Description ボックスでは、データソースの説明を入力できます。この説明はユーザが利用可能なデータソース一覧の中からこのデータソースを見つけ出すのに役立ちます。これはオプション項目です
•Isolation level ボックス このデータソースの初期の分離レベルを数値で入力します：
•0 これは read uncommitted 分離レベルと呼ばれます。これはデフォルトの分離レベルです。これは最高の同期性を提供しますが、結果セットには Dirty reads, non-repeatable reads, および phantom ローの現象が発生する可能性があります
•1 これは read committed レベルとも呼ばれます。これはレベル 0 よりも同期性が低くなりますが、レベル 0 で発生する非整合性を抑止する事ができます。 Non-repeatable ロー および phantom ローの発生の可能性はありますが、dirty reads は防止できます 
      
•2 これは repeatable read レベルと呼ばれます。Phantom ローが発生する可能性があります。Dirty reads および non-repeatable ローは発生しません 
•3 これは serializable レベルと呼ばれます。 このレベルでは最も低い同期性を提供する、最も厳密な分離レベルです。Dirty reads, non-repeatable reads, および phantom ローは発生しません 
•   Microsoft applications (Keys in SQLStatistics) チェックボックスが選択された場合、SQLStatistics 関数は外部キーを返します。 ODBC の仕様では SQLStatistics はプライマリおよび外部キーを返しません。しかしながら、いくつかの Microsoft アプリケーション (Visual Basic や Access) は SQLStatistics でプライマリおよび外部キーが返される事を期待します 
•   Delphi applications チェックボックスが選択された場合、データソースを生成するアプリケーションの作成にBorland Delphi アプリケーションの開発ツールが使用されます 
このオプションが選択された場合、2つのブックマーク (ひとつは前方フェッチ、他方は後方フェッチ用) の代わりに、1 つのブックマークが各ローに割り当てられられます。   Delphi はひとつのローに複数のブックマーク値を扱うことはできません。もし、このオプションがクリアされた場合、ブックマーク値を取得する為にカーソルの先頭から該当のローまでの移動が発生するためスクロール可能カーソルのパフォーマンスに影響があります。 
•   Suppress fetch warnings チェックボックスが選択された場合、フェッチ時にデータベースサーバから返される warning メッセージの表示は抑止されます 
バージョン 8.0 およびそれ以降では以前のバージョンより幅広いフェッチ warning を出力します。以前のバージョンで稼働していたアプリケーションの場合、このオプションを選択しフェッチ warning が適切に処理されるようにすることができます。 
•   Prevent driver not capable errors  Adaptive Server Anywhere ODBC ドライバは修飾子をサポートしないため、Driver not capable error を出力します。いくつかのODBC アプリケーションではこのエラーを適切に処理できない事があります。このオプションを選択してこのエラー発生を抑止し、アプリケーションが適切に動作するようにすることができます 
•   Delay AutoCommit until statement close このオプションを選択することで、ステートメントをクローズするまでコミット操作を遅延させることができます 
•   Describe Cursor Behavior プロシージャ実行時にカーソルが再分析される頻度を指定します。デフォルト設定は If Required です 
•Never このオプションはカーソルの再分析が必要ない場合に選択します。カーソルの再分析はリソースを使用し性能を低下させます 
•If required このオプションを選択した場合、ODBC ドライバはカーソルを再分析する必要があるかを判断します。プロシージャ内に RESULT 句があると、ODBC アプリケーションはカーソルオープン後に結果セットの再分析を行いません。これはデフォルトです 
•Always カーソルはオープン毎に再分析されます。もし、Transact-SQL プロシージャや複数の結果セットを返すプロシージャを使用している場合、カーソルのオープン毎に再分析を行わなければなりません 
•   Translator ANSI と OEM コードページ間の変換を行います。多くのデータベースでは ODBC ドライバマネージャが自動的にクライアントとデータベースの文字セット間の変換を行うため、翻訳の必要はありません。もし、お使いのデータベースが ANSI コードページ (デフォルト) の場合は、translator を選択してはいけません 
translator が必要である場合、Select をクリックしインストールされた translator の一覧から該当の translator を選択します。 
•Select Translator Select Translator をクリックし、インストールされた translator の一覧から必要な ODBC translator を選択します 
405 SQLWays Documentation Copyright © 1999-2015 
•Test Connection 入力した情報により正しく接続できるかをテストします。テストを実行する際にはユーザIDとパスワードを Login タブで指定しなければなりません
       
ODBC Sybase ASA Driver Setup ダイアログ： Login タブ 
以下に示すLogin タブは、ドライバ構成の次のタブです。ここではODBCドライバが接続に使用するログイン情報を入力します。 
ODBC Configuration ダイアログのLogin タブの構成要素は以下の通りです：  
•   Use integrated login 統合ログインを行う場合にはこのオプションを選択します 
このオプションでは、ユーザIDとパスワードの指定は不要です。その代わり、使用中のオペレーティングシステムのユーザIDとパスワードが Adaptive Server Anywhere 統合ログイン機能に送られます。   統合ログインを使用するには、統合ログイン権限の付与と対象データベースが統合ログイン可能に設定されていなければなりません。統合ログイン権限の管理はDBAユーザのみが可能です。 
•   Supply user ID and password このオプションを選択する場合、接続用のユーザIDとパスワードを指定する必要があります 
User ID 接続用ユーザIDを入力。対象データベースで接続権限を持つユーザID 
Password 接続用パスワードを入力。上のユーザIDと合致したパスワード 
407 SQLWays Documentation Copyright © 1999-2015 
パスワードに使用される文字はデータベースの設定に関わらず大文字小文字を区別します。
•Encrypt passwordこのオプションを選択すると、パスワードはプロファイルに暗号化されて格納されます
ODBC Sybase ASA Driver Setup ダイアログ： Database タブ 
左から３番目のタブは Database タブです。もしASAをインストールしたマシンでODBC DSNを構成する場合、以下の画面の通りにサーバファイルとデータベースファイルの名前と場所を指定する必要があります。 この画面では接続または切断時にデータベースを起動または停止するかの設定ができます。これはASA DSN を構成し使用する際には、留意しておかなければならない事柄です。 
ODBC Configuration ダイアログの Database タブは以下の構成要素があります：  
•   Server name Adaptive Server Anywhere パーソナルサーバ または ネットワークサーバの名前を入力。例えば、asademo。もしネットワークサーバに接続する場合には名前を指定しなければなりません 
デフォルトのローカルパーソナルサーバへ接続する場合、またはローカルマシンのデータベースファイルからデータベースサーバを起動する場合にはサーバ名を入力しません。デフォルトのパーソナルサーバがなくサーバ名を省略した場合、接続は失敗します。 
•   Start line start line はパーソナルデータベースサーバやネットワークサーバを起動するコマンドです。現在起動していないローカルのデータベースサーバをパラメータを指定して起動したい場合に使用します。サーバのフルパス名を指定する必要があります。例えば、パーソナルデータベースサーバを起動するには、c:\Program Files\Sybase\SQL Anywhere 9\win32\dbeng9.exe を入力します 
Start Line フィールドにはオプション項目を設定できます。start line とオプションは必要な時に使用します： 
•サーバのアドバンスト機能の使用 
409 SQLWays Documentation Copyright © 1999-2015 
•通信パラメータの制御
•診断やトラブルシュート用メッセージの出力
•権限の設定
•データベースパラメータの設定 (暗号化を含む)
•Database name サーバで稼働する各データベースはデータベース名で識別されます。接続対象のデータベース名を入力
•Database file 現在稼働していない接続対象データベースのファイル名を指定。 データベースファイルの名前をフルパスで指定することを推奨。例えば、C:\sample.db。またはサーバの作業ディレクトリの相対パスのファイル名を指定
•BrowseBrowse をクリックし、ディレクトリからデータベースファイルを選択します 
•Encryption key    データベースが暗号化されている場合、データベース起動する時にはいつもキーを指定しなければなりません
データベースが AES や MDSR で強力に暗号化されている場合、データベースに接続するにはここにキーを設定する必要があります。
Start Line フィールドに暗号化オプションを指定することもできます。  
•Start database automatically このオプションを選択すると、接続前に指定されたデータベースファイルでデータベースが起動されます
起動中のデータベースのみに接続したい場合には、この Start Database Automatically オプションはクリアしておく必要があります。 
•Stop database after last disconnect このオプションを選択すると、最後のユーザが切断した後データベースを自動的にシャットダウンします.
ODBC Sybase ASA Driver Setup ダイアログ：Network タブ 
ASA がインストールされたリモートマシン向けにODBC DSN を構成する場合、Network タブに接続情報を入力する必要があります。ネットワーク接続情報は次のフォーマットです： host=machine_name:port_number。machine_name は 接続対象の ASA が稼働しているマシン名であり、port_number は ASA のポート番号です。例：  host=chance:2638 
ODBC Configuration ダイアログのNetwork タブには以下の構成要素があります：  
•   TCP/IP ネットワークパケットの暗号化をECC_TLS (旧 Certicom) または RSA_TLS で行いたい場合、データベースサーバへの接続ネットワークのプロトコルを TCP/IP にしなければなりません。隣のフィールドで、クライアントアプリケーションとサーバ間の通信の確立と調整用のパラメータを入力する事ができます 
  例えば、server1 の port 4436 のデータベースサーバに接続するには、 HOST=server1;PORT=4436と入力します。   どのプロトコルが使用できるのか不明の場合はネットワーク管理者に問い合わせてください。 
•   SPX Novell NetWare ネットワーク上のデータベースに接続するには SPX プロトコルを選択します。NetWare は TCP/IP プロトコルもサポートしています。隣のフィールドで、クライアントアプリケーションとサーバ間の通信の確立と調整用のパラメータを入力する事ができます 
411 SQLWays Documentation Copyright © 1999-2015 
例えば、SPX 接続用に次のようなパラメータを入力する事ができますHOST=0:0:0:0:0:1/4:236:121:215;PORT=2369 
どのプロトコルが使用できるのか不明の場合はネットワーク管理者に問い合わせてください。
•Named pipes 名前付きパイププロトコルは同一マシン内のクライアント／サーバ通信で使用されます。もし認証済みのセキュリティ環境下で実行したい場合、名前付きパイプを利用することができます。これは Windows NT でのみ利用可能です。
どのプロトコルが使用できるのか不明の場合はネットワーク管理者に問い合わせてください。
•Shared memory 共有メモリプロトコルは同一マシンの同一オペレーティングシステム上で稼働するクライアント／サーバ間の通信に使用されます。
どのプロトコルが使用できるのか不明の場合はネットワーク管理者に問い合わせてください。
•Liveness timeout  ライブネスパケットはクライアント／サーバ間で通信路が失われていない事を確認するために送られます。もしクライアントがライブネスパケットを Liveness timeout 時間内に受信しなかった場合、通信路は切断されます。このパラメータはネットワークサーバとTCP/IP または IPX通信プロトコルでのみ有効です。
デフォルトのライブネスタイムアウト値は 120 秒です。 
•Idle timeout   通信路が切断されるまでのクライアントのアイドルタイムアウト時間を設定します。もしクライアントがアイドルタイムアウト時間の間にリクエストを発行しない場合、通信路は切断されます。
デフォルトのクライアントアイドルタイムアウト値は 240 分です。 
•Buffer size 通信パケットの最大サイズをバイトで指定します。ネットワークソフトウェアはネットワークへの送出時に各バッファに情報を付加するため、このサイズはネットワークが許容する最大サイズよりも小さくする必要があります。
デフォルトのバッファサイズは 1460 バイトです。 
•Compress network packets このオプションを選択すると、通信のデータ圧縮が行われます。データ圧縮を行うと、ある環境下では Adaptive Server Anywhere の性能が著しく向上します
•Select the method for encryption of network packets クライアントマシンからネットワークに送出されるパケットの暗号化を可能とします
•Noneクライアントマシンが送出するパケットは暗号化されません。これはデフォルト設定です
•Simpleクライアントから創出されるパケットは単純な暗号化が行われます。単純な暗号化は、以前のバージョンを含む、全てのプラットフォームの Adaptive Server Anywhere でサポートされています。単純な暗号化は ECC_TLS や RSA_TLS 暗号化よりも低い暗号化強度です 
•ECC TLSこのオプションは ECC_TLS (旧 Certicom) 暗号化を使用します。ECC_TLS 暗号化はクライアントと
サーバ間でやりとりされるネットワークパケットの機密性と一貫性を保証します。これは TCP/IP プロトコルでのみ有効です
隣のフィールドには、証明書の値を入力します。Edit をクリックしこの値を設定する事ができます。 
•RSA TLSこのオプションは RSA_TLS 暗号化を使用します。RSA_TLS 暗号化はクライアントとサーバ間で
やりとりされるネットワークパケットの機密性と一貫性を保証します。これは TCP/IP プロトコルでのみ有効です 
隣のフィールドには、証明書の値を入力します。Edit をクリックしこの値を設定する事ができます。 
      
•   Edit Edit をクリックし、Certicom 暗号化用の証明書、認証局、認証組織、証明書の名前を Certicom Encryption オプションダイアログで設定することができます 
この項目は Adaptive Server Enterprise と DirectConnects の接続文字列の形式とは異なることに留意が必要です。それらは machine_name,port のOpen Client 形式です。例えば、chance,5000   コネクションのテスト   このセクションの上で述べたように、ASA ドライバ構成ユーティリティにはODBC タブに Test Connection ボタンを備えています。これにより構成ユーティリティの中から接続の確認を行うことができます。 
413 SQLWays Documentation Copyright © 1999-2015 
ODBC Sybase ASA Driver Setup ダイアログ： Advanced タブ 
ODBC Configuration ダイアログのAdvanced タブには以下の構成要素があります： 
•Connection name 接続を識別する名前を入力。この項目はオプションです
•Character set 文字セット名を入力。デフォルトでは、クライアントの ANSI 文字セットが使用されます。例えば、英語システムは cp1252 。ANSI 文字セットの代わりにインストールされている OEM 文字セットを指定することができます
•Allow multiple record fetching このオプションを指定すると、性能向上を目的とし一度に複数レコードを取得する事ができます
•Display debugging information in a log file このオプションを指定すると、通信リンクの診断情報がログファイルに記録されます
•Log fileデバッグ情報を記録するログファイル名を指定します
•Additional connection parameters 追加の接続パラメータをセミコロンで区切って指定します。例えば
DEBUG=YES;LOG=connection.log この項目に設定されたパラメータはこのダイアログで設定した他のパラメータよりも優先します。例えば、Identification タブでユーザID DBA を設定した場合でも、この項目にパラメータ "uid=bsmith" を指定すると、ユーザID bsmith が接続に使用されます。 
       
Certicom Encryption Options ダイアログ 
このダイアログはクライアントの Certicom Encryption 設定を表示します。  
Certicom Encryption Options ダイアログは以下の構成要素があります： 
•   Trusted certificates クライアントがサーバを認証する証明書ファイル名を入力。Browse をクリックしディレクトリから証明書ファイルを参照することができます。これは必須項目です 
•Browse Browse をクリックし、ディレクトリから証明書ファイルを選択します 
•   Certificate company   証明書を発行した認証局または組織の名前を入力。サーバとクライアントの値は一致していなければなりません。これはオプション項目です 
•   Certificate unit 認証単位を入力。これは組織単位とも呼ばれます。サーバとクライアントの値は一致していなければなりません。これはオプション項目です 
•   Certificate name 証明書のコモンネームを入力。サーバとクライアントの値は一致していなければなりません。これはオプション項目です 
415 SQLWays Documentation Copyright © 1999-2015 
Sybase Adaptive Server IQ ドライバ 
このセクションでは Adaptive Server IQ (以下 'ASIQ') バージョン 12 用ODBCドライバについて説明します。このドライバはアプリケーションの ASIQ バージョン 12 サーバへの接続に使用されます。ASIQ ドライバ構成のバナーは "ODBC Configuration for Adaptive Server Anywhere," と読めます。実際に ASIQ向けにも以下の画面のように表示されます。ASA と ASIQ 12 のODBC ドライバは根本的に同一です (ASIQ 12 は ASA アーキテクチャ上に構築されています)。 
ドライバは根本的に同一であるため、ASIQ 12 ドライバに設定する情報は、ASA ドライバに対して設定するものと同じです。 
このドライバに関する詳しい情報は、前のセクションAdaptive Server Anywhere ドライバを参照してください。 
Sybase Adaptive Server Enterprise ドライバ 
このセクションはAdaptive Server Enterprise (以下 'ASE') 11.x および 12.0 バージョンのODBCドライバに関する接続情報について説明します。これらのドライバはクライアントアプリケーションが ASE サーバに接続するのに使用されます。  
•   ASE 12 ODBC ドライバ 
•   System 11 ODBC ドライバ 
両バージョンのドライバはASEへのODBC接続をするためにOpen Client と共に稼働します。ご存じのように、ASE のインストールと構成作業においてインストール時に指定したサーバ名ベースのOpen ClientとしてASEが自動的に定義されます。デフォルトではASEがインストールされたマシンの名前になります。この定義が行われる際に当該ASEの sql.ini ファイルにエントリが作成されます。sql.ini のエントリは次のフォーマットです：machine_name,port_number。例： chance,5000 
この接続文字列は ASA や ASIQ ドライバが使用するものとは異なる形式であることに注意してください。それらのフォーマットは host=machine_name:port_numberです。 
ASEと異なるマシン上で ODBC DSN の構成を行う場合、適切なバージョンの Open Clientをインストールし、そのマシン上の sql.ini ファイルにエントリを作成し Open Client として ASEの定義を行う必要があります。 
417 SQLWays Documentation Copyright © 1999-2015 
ASE 12 ODBC ドライバ 
ODBC DSNを構成 
ASE バージョン 12 から導入されたASE ODBC ドライバーは、General タブで全ての必要な情報を設定する事ができます。接続テスト機能も提供されており、ドライバ構成ユーティリティから接続の確認を行う事ができます。
このドライバは Open Client バージョン 12.0 および ASE バージョン 12、11.9.2 と互換性があります。このドライバはOpen Client 11.1.1 では使用できません。もし Open Client 11.1.1 で定義されたサーバで DSN を構成しようとした場合、接続テストは成功しますが、DSNを保存してユーティリティを終了することは出来ません。 
この ASE ODBC ドライバはOpen Client バージョン 12.0 と共に使われODBC接続を実現します。それ故、ODBC DSN のサーバ名フィールドに指定する ASE サーバ名は sql.ini ファイルのOpen Clientとして定義された名前と同一でなければなりません。下の図は ASE ドライバ構成のGeneral タブです。 
以下の情報があります：
Data Source Name =ASE ODBC DSN として割り当てられる任意の名前。必須フィールドです 
Description =(この図では空白) この DSN に関する説明。オプションフィールドです 
      
Server Name =sql.ini ファイルに Open Client として定義された ASE サーバの名前。必須フィールドです 
Database Name =ODBC DSN が接続する ASE データベースの名前。オプションフィールドです。データベース名の指定はこのタブかログオン画面で指定します。またデフォルトのマスタデータベースへ接続する場合は指定を省略できます 
接続のテスト 
ドライバ構成ユーティリティの終了前に Test Connect ボタンを押下し接続確認を行うことができます。 
419 SQLWays Documentation Copyright © 1999-2015 
System 11 ODBC ドライバ 
ODBC DSNを構成 
ASE 11.x バージョン向け ODBC ドライバには分かり易い名前はありません。'Sybase System 11.'と呼ばれています。このドライバは Open Client 10.x 、11.1.1、SQL Server 10.x、ASE 11.5、ASE 11.9.2 および ASE 12.0 と互換性があります。. 
このドライバはSybase Open Client プロトコルと共にODBC接続を実現しています。それ故、ODBC DSN 定義のサーバ名フィールドに指定するASE サーバの名前は sql.ini ファイルにOpen Client として定義されたものと同じものを指定しなければなりません。下の図ではGeneral タブを示しています。 
以下の情報があります：
Data Source Name =ASE ODBC DSN に割り当てた任意の名前。これは必須 フィールドです 
Description =このDSNの説明。オプションフィールドです 
Server Name =sql.ini ファイルにOpen Clientとして定義されたものと同じASE のサーバ名。これは 必須 フィールドです 
Database Name =ODBC DSN で接続する対象の ASE データベースの名前（図では空白）。これはオプションフィールドです。もしデータベース名を空白にすると、ドライバはデフォルトのマスタデータベースに接続します
接続のテスト 
      
 Sybase System 11 ドライバ構成では、接続テスト機能は提供されていません。このドライバで定義されたODBC DSNを試験するには、ODBC アプリケーションで行う必要があります。Microsoft SDKで提供される ODBC Test を使うとASE への接続の確認を行う事ができます。 
421 SQLWays Documentation Copyright © 1999-2015 
Sybase Adaptive Server Enterprise へのODBC接続の構成 
このセクションでは、Adaptive Server Enterprise のODBC Configuration Options ダイアログとODBCデータソースの接続パラメータ設定について説明します。
ODBC Configuration ダイアログには４つのタブがあります：  
•General タブ
•Advanced タブ
•Connection タブ
•Performance タブ
       
ODBC Sybase ASE Driver Setup ダイアログ： General タブ 
•   ODBC Sybase ASE ドライバセットアップダイアログにより、Sybase ASE データソースの新規作成または既存データソースの構成を行うことができます 
Data Source Name: Sybase ASE データソース構成を識別する文字列。例 "Accounting" または "Sys10-Serv1."  
Description: データソース名の説明文（オプション）。例 "My Accounting Database" または "System 10 on Server number 1."   
Network Library Name: ネットワークライブラリ名を選択。使用するネットワークプロトコルの指定です。値は Winsock および NamedPipes です。デフォルト値は Winsock です。 
Network Address: ネットワークアドレスを入力。設定する値は上で選択したネットワークライブラリ名により異なります。もし Winsock を選択した場合、以下のように IP アドレスを指定します： "<サーバ名 または IP アドレス>, <ポート番号>"。例として、ネットワークが名前付きサーバをサポートしている場合、アドレスは以下の様に指定できます： "Sybaseserver, 5000"。また直接IPアドレスの指定も可能です： "199.226.224.34, 5000" 
ネットワークプロトコルとして名前付きパイプを選択した場合、サーバのパイプアドレスを指定します。例として、 "\\machine1\sybase\pipe\query"。 
Database Name: デフォルトで接続したいデータベース名を指定。もし値を指定しない場合、システム管理者が定義した各ユーザのデフォルトになります 
HA Failover Server Connection Information/Network Address: 通信エラー発生時に使用される High Availability (HA) フェイルオーバサーバのネットワークアドレスを指定。ドライバは接続が切れたことを検知すると自動的にここで指定された HA フェイルオーバサーバに再接続します。このオプションは High Availability Failover 機能が有効にされた Sybase ASE バージョン 12 でのみ利用可能です。   ネットワークアドレスの有効な値の説明は上の記述を参照してください。 
423 SQLWays Documentation Copyright © 1999-2015 
ODBC Sybase ASE Driver Setup ダイアログ： Advanced タブ 
ODBC Sybase ASE Driver Setup ダイアログボックスの Advanced タブでは、新規または既存のSybase ASE データソースに対するオプション設定を行う事ができます。
Cursor Positioning for raiserror: 値は 0 または 1。raiserror が発生した時とカーソルの位置を表示するか否かを示します。 
0 (デフォルト) の場合、raiserror は周辺のステートメントとは別に処理されます。SQLExecute, SQLExecDirect, または SQLMoreResults で raiserror が処理された時にエラーが返されます。結果セットは空です。 
1 (MS 互換) の場合、raiserror は次のステートメントで処理されます。次のステートメントが処理された時にエラーが返され、カーソルの位置は以降の結果セットの最初のローです。単一の実行で複数の raiserror が返されることがあります。 
Default Buffer Size for Long Columns (in Kb): TEXT や IMAGEカラムからフェッチするデータの最大長を整数値で指定。値は1024の倍数 (例えば 1024, 2048）でなければなりません。デフォルトは 1024 KB。ロングデータの合計が 1 MBを超える場合にはこの値を増やす必要があります
Distributed Transaction Model: 分散トランザクションのモデルを選択。選択可能な値は XA Protocol または Native OLE 
Initialization String: 
Enable Quoted Identifiers: このチェックボックスの選択すると、引用符で囲まれた識別子がサポートされます 
Enable Describe Parameter: このチェックボックスを選択すると、アプリケーションがSQLステートメントやストアドプロシージャのパラメータを参照する事ができるSQLDescribeParam関数が有効になります。このオプションを使用するには、Prepareメソッドは 0 または 1に設定し、SQLステートメントには長いパラメータを含んではいけません。Microsoft Remote Data Objects (RDO) を使用する場合にはこのオプションを選択しなければなりません 
Application Using Threads: このオプションは、ドライバがマルチスレッドアプリケーションで使われる場合に選択します。アプリケーションがシングルスレッドの場合はこのオプションをクリアします。この設定をオフにすることで ODBC スレッドセーフ標準に必要な追加処理が行われない様にする事ができます
Tightly Coupled Distributed Transactions: このチェックボックスを選択すると、Sybase ASE バージョン 12 データベースで密結合の分散トランザクションが実行されます。この設定により同一の分散トランザクション内で複数の接続が相互のロックを行いません
もしこのチェックボックスが選択された場合、ドライバの全般的な性能は良くなります。しかし同一の分散トランザクション内に複数の接続がある場合、接続が相互のロックに従わないためハングが発生する可能性があります。
このオプションはドライバが分散トランザクションに参加しており、Sybase ASE バージョン12 データベースに接続している場合のみ有効です。それ以外の場合このオプションは無視されます。
 Translate ボタン 
Select Translator ダイアログボックスが表示され、文字セットの翻訳をすることができます。IBM PC 文字セットから ANSI 文字セットへ変換するには OEM to ANSI translator を選択します 
ODBC Sybase ASE Driver Setup ダイアログ： Connection タブ 
ODBC Sybase ASE Driver Setup ダイアログボックスの Connection タブでは、新規または既存のSybase ASE データソースに対するオプション設定を行う事ができます 
Database List: ログオンダイアログボックスに表示されるデータベース名を指定します。複数の名前はカンマで区切ります 
Default Logon ID: Sybaseデータベースへ接続するデフォルトのログオンID を指定。 この ID は大文字小文字を区別します。ログオンIDは接続対象のデータベースのセキュリティが有効にされている場合に必要となります。ODBC アプリケーションは別のIDを指定することができ、ユーザはログオンダイアログボックスや接続文字列で他のログオンIDを指定することができます 
Workstation ID: クライアントが使用するワークステーション ID を指定 
Application Name: Sybase が識別するあなたのアプリケーションの名前 
Charset: 文字セットの名前を指定。この文字セットは Sybase サーバにインストールされていなければなりません。デフォルトは Sybase サーバのデフォルト設定です。ユニコードをサポートするドライバの場合、この属性は UTF-8 でなければなりません。有効な文字セットの一覧は Sybase サーバのドキュメントを参照してください 
Language: 言語名を指定。 この言語は Sybase サーバにインストールされていなければなりません。デフォルトは English です 
425 SQLWays Documentation Copyright © 1999-2015 
ODBC Sybase ASE Driver Setup ダイアログ：Performance タブ 
ODBC Sybase ASE Driver Setup ダイアログボックスの Performance タブでは、新規または既存のSybase ASE データソースに対するオプション設定を行う事ができます。
Select Method: 0 または 1 を指定。Select ステートメントでのカーソル使用を制御します。もし デフォルトの 0 に設定された場合、カーソルが使用されます。1 に設定された場合、Selectステートメントが直接実行されます。1 を設定するとデータソースに対しアクティブなステートメントの数は 1 に制限されます 
Prepare Method: 0, 1, 2, または 3 を指定。SQLPrepare が呼ばれた場合にストアドプロシージャが作成されるか否かを制御します
0 に設定された場合、ストアドプロシージャはSQLPrepareが呼ばれる度に生成されます。この設定ではパラメータの無いステートメントを処理する場合、性能の劣化をもたらします。
1 （初期デフォルト）に設定された場合、ドライバはステートメントにパラメータが含まれる場合のみストアドプロシージャを作成します。パラメータがない場合はステートメントはキャッシュされ、SQLExecuteで直接実行されます。 
2 に設定された場合、ストアドプロシージャは作成されません。ドライバはステートメントをキャッシュしSQLExecuteで直接実行します。構文エラー等はSQLExecute実行時に報告されます。 
3 に設定された場合、ストアドプロシージャは作成されません。構文エラー等はSQLExecute時でなくSQLPrepare時に報告される以外は値 2 と同一です。エラーをSQLPrepareで取得したい場合にこの値を使用します。 
Fetch Array Size: フェッチ時にドライバが取得するローの数を指定します。これはユーザに返すローの数とは異なります。デフォルトは 50 ローです  
Packet Size: 値は -1, 0, または x を指定。データベースサーバからクライアントへ転送されるネットワークパケットのバイト数を指定。この属性を適切に設定することで性能が向上します。
-1 に設定した場合、ドライバは最初に接続したデータソースの最大パケットサイズを計算し、システム情報に保存します。 
デフォルトの 0 に設定した場合、ドライバは Sybase サーバの構成で指定されたデフォルトパケットサイズを使用します。 
x （1 から 1024 までの整数）に設定された場合、ドライバはパケットサイズを x * 512 バイトで計算します。例えば、 "6" の場合、パケットサイズは 6 * 512 バイト (3072 バイト) となります。 
この接続属性を活用するには、Sybaseサーバの maximum network packet size 値をこの PacketSize 値より大きいか等しい値に設定しなければなりません。例えば：sp_configure "maximum network packet size", 5120 reconfigure Restart Sybase Server 
注： ODBC の仕様には、同様の機能を持つ SQL_PACKET_SIZE オプションがあります。この属性と ODBC 接続オプション両方を設定するアプリケーションでの衝突を防ぐため、両者は相互排他的に定義されます。もし PacketSize を設定した状態でSQL_PACKET_SIZE が呼ばれると、"Driver Not Capable" というメッセージが出力されます。もしPacketSize を設定していなければ、ドライバはアプリケーションの SQL_PACKET_SIZE の呼出しを受け付けます。  
Connection Cache Size: 接続キャッシュが保持するコネクションの数を指定します。デフォルトの値は 1 です。接続キャッシュを設定するには、Select Method オプションを 1 （ダイレクト）に設定する必要があります。コネクションキャッシュの数を増加させると、特定のアプリケーションの性能を向上させることができますが、データベース側により多くのリソースが必要となります
      
（このページは空白です） 
427 SQLWays Documentation Copyright © 1999-2015 
MySQL への MyODBCによる接続の構成 
MySQL ODBC ドライバは、データソース生成時に MySQL ODBC Driver - DSN Configuration ダイアログボックスを表示し、接続パラメータに関する追加情報を入力させます。
•DSN Information:
•Data Source Name - 構成されたデータソースの名前
•Description - 構成されたデータソースの説明
•MySQL Connection Parameters:
•Host/Server Name (または IP) - MySQL サーバのホスト名
•Database Name - デフォルトデータベース名
•User - MySQL への接続用ユーザ名
•Password - ユーザ名に対応するパスワード
•Port (デフォルト3306) - サーバがLocalhostにない場合の接続先 TCP/IP ポート。省略時はデフォルト (3306)使用
•SQL command on connect - MySQLへの接続時に実行されるコマンド
   SQLWays Studito 
この章ではSQLWays Studioによるスクリプトの変換について記述します。  
次のページではSQLWays Studioによる変換の実行について説明しています。 
•   “ソースおよびターゲットの選択” 
このページでは変換のソースとターゲットの選択方法が記述されています。 
•   “変換の実行”  
このページではスクリプトの変換の実行方法が記述されています。 
429 SQLWays Documentation Copyright © 1999-2015 
ソースおよびターゲットの選択
単純なソースからターゲットへのコード変換
スクリプトやアプリケーションファイルの変換を開始する前に、変換の方向－ソースとターゲットを上のスクリーンショットのように指定しなければなりません。
埋め込みSQLのAPIのソースからターゲットへの変換 
アプリケーションの埋め込みSQLを変換する場合、ソースおよびターゲットデータベースの情報を指定する必要があります。これによりSQLWaysは変換する構文を認識する事ができます。“…” ボタンをクリックし、データベース情報を指定します。API コードの変換を行う前に、Source Settings ページのApplication Conversion グループからSource database を指定します。Target database 向けにも同様の作業を行う必要があります。 
変換の実行 
単純なコードの変換 
変換を開始するには、上の図のように "Run" ボタンを押下します。  
431 SQLWays Documentation Copyright © 1999-2015 
SQLWays トラブルシューティングガイド 
SQLWaysの使用時には様々な種類の問題が発生し、その対処には様々なテクニックが必要です。この部分ではそれらのテクニックについて述べます。
•IBM DB2 データベース
•Oracle データベース
•MySQL データベース
•Access データベース
•Excel ファイル
       
IBM DB2 データベース 
この章では IBM DB2 データベースのトラブルシュートのヒントを示します。また、SQLWays が IBM DB2 データベースへのインポートで使用するIBM DB2ユーティリティでよく発生する問題の対処方法についても説明します。  
•   IBM DB2へのインポート 
•   IBM DB2からのエクスポート 
433 SQLWays Documentation Copyright © 1999-2015 
IBM DB2へのインポート 
このセクションではデータ及びデータベースオブジェクトのIBM DB2へのインポートに関してよくある質問に対する回答を示しています。
•SQL0286N A default table space could not be found with a pagesize of at least "<pagesize>" that authorizationID "<user-name>" is authorized to use
       
SQL0286N A default table space could not be found with a pagesize of at least "<pagesize>" that authorization ID "<user- name>" is authorized to use 
ソフトウェア 
IBM DB2 データベース 
DB2 データベースへデータのインポートを行うと、SQLSTATE0286N メッセージが返される 
SQLSTATE0286N は 長さが4K を超えるローを持つテーブルを作成しようとしている事を示します。その様なテーブルを作成するには、データベースに十分なページサイズ（少なくとも "<pagesize>"）のテーブルスペースを作成する必要があります。 
435 SQLWays Documentation Copyright © 1999-2015 
IBM DB2からのエクスポート 
このセクションではデータ及びデータベースオブジェクトのIBM DB2からのエクスポートに関してよくある質問に対する回答を示しています。
•SQLSTATE 01517 - A character that could not be converted was replaced with a substitute character
       
SQLSTATE 01517 - A character that could not be converted was replaced with a substitute character 
ソフトウェア 
IBM DB2 データベース 
•   DB2 データベースからのエクスポート時に SQLSTATE 01517 メッセージが返される 
SQLSTATE 01517 は、データベースがネイティブ言語データ (German や French など) を格納しており、お使いのIBM DB2 クライアントソフトウェアがそのネイティブ言語データベースを処理する様に構成されていない場合に発生します。   クライアントのワークステーション上で、DB2CODEPAGE レジストリ値に適切な値を設定します。詳しくは IBM DB2 ドキュメンテーションのコードページ値の記述を参照してください。   
437 SQLWays Documentation Copyright © 1999-2015 
Oracle データベース 
この章では Oracle データベースのトラブルシュートのヒントを示します。また、SQLWays が Oracle データベースへのインポートで使用するSQL LoaderやSQL Plus ユーティリティでよく発生する問題の対処方法についても説明します。 
•Oracle SQL Loader が終了しない
•DROP TABLE Errors, ORA-02449: unique/primary keys in table referenced by foreign keys
•SQL*Loader-350: Syntax error - found "TIMESTAMP"
       
Oracle SQL Loader が終了しない 
ソフトウェア 
Windows 2000, Oracle client 8.0.5 (8.0.x). 
•   データのインポートを行うと、SQLLoader はコマンドラインへプロンプトを戻さない。ユーザは次のジョブを実行するために Ctrl+C を入力しなければならない。  
 •   SQL Loader が他のアプリケーションから実行された場合、そのウィンドウはオープン状態のままとなる。  
この問題を解決するには、クライアントをOracle 8i (8.1.x) にアップグレードしなければなりません。Oracle 8.0.x はWindows 2000 ではサポートされておらず、予想外の動作が起こります。この事象はそのひとつです。  
439 SQLWays Documentation Copyright © 1999-2015 
DROP TABLE Errors, ORA-02449: unique/primary keys in table referenced by foreign keys 
SQLWaysがテーブル生成前にDROP TABLEステートメントを実行すると、Oracle はエラー ORA-02449 を返すことがあります。このエラーはFOREIGN KEY制約にて参照されているため対象テーブルが削除できないことを示します。 
子テーブルにより参照されているテーブルを削除するには、DROP TABLE ステートメントにCASCADE CONSTRAINTS オプションを指定する必要があります。詳しくはテーブルのドロップを参照してください。
Oracle 向けに CASCADE CONSTRAINTS オプションを生成するには 
•SQLWays ウィザード - DDL オプション
•SQLWays コマンドライン - [DDL] サブセクション
SQL*Loader-350: Syntax error - found "TIMESTAMP" 
ソフトウェア  
Oracle 8i  
SQL Loader によるデータインポート時に、TIMESTAMPの付近で文法エラーが生成される  
TIMESTAMP データ型は Oracle 9i 以降で有効です。もし Oracle 8i への移行を行う場合、SQLWaysにバージョンを指定し TIMESTAMP データ型の代わりに DATE データ型が使用されるようにします。   
441 SQLWays Documentation Copyright © 1999-2015 
MySQL データベース 
この章では MySQL データベースのトラブルシューティングのヒントを示します。また、SQLWays が MySQL データベースへのインポートで使用するMySQLユーティリティでよく発生する問題の対処方法について説明します。  
•LOCAL DATA INFILE コマンドによるMySQL 4.0.x へのデータインポート (LOCAL keyword - The used command is notallowed with this MySQL version)
       
LOCAL DATA INFILE コマンドによる MySQL 4.0.x へのデータインポート (LOCAL keyword - The used command is not allowed with this MySQL version) 
MySQL 4.0.x で LOAD DATA INFILE コマンドに LOCAL キーワードを使用した場合に発生する問題があります。LOCAL キーワードによりクライアントからデータをロードすることができます。それ以外では、データはサーバ上に存在しなければなりません。   MySQL 4.0.x では、LOCAL キーワードは MySQL サーバが --local-infile=1 で起動された時のみ有効です。   LOAD DATA LOCAL INFILE が無効である場合、次のようなエラーメッセージ (1148)： "The used command is not allowed with this MySQL version" が表示されます。 
443 SQLWays Documentation Copyright © 1999-2015 
Access データベース 
この章ではAccessデータベースへのトラブルシューティングのヒントを提示します。この章ではSQLWaysがAccessへデータベースをインポートするのに用いるAccessユーティリティでよく発生する問題の対処について説明しています。  
•Accessからのエクスポート
       
Accessからのエクスポート 
Accessからのエクスポートの際に以下のエラーが発生します：  
"Record(s) cannot be read; no read permission on 'MSysRelationships" 
このエラーはSQLWaysがAccessから関係情報を読み出す時に起こります。SQLWaysはそれらを 'MSysRelationships' システムテーブルから取得します。システムテーブルの読み出しを可能とするには、Access -> Tools -> Options -> View->Show を開き、システムオブジェクトを選択します。   SQLWays によるエクスポートを再実行すると、関係情報をエクスポートする事ができます。  
445 SQLWays Documentation Copyright © 1999-2015 
Excel ファイル 
この章では Excel ファイルからのデータのエクスポートに関するトラブルシュートのヒントを示します。 
•Excel のテーブル名を指定する構文
Excelのテーブル名を指定する構文 
Excel ファイルはひとつ又はそれ以上のシートを含んでいます。 Excel ODBC ドライバを使用すると、それらのシートをテーブルとして参照する事ができます。しかしExcelテーブルの参照にはExcelの構文を使用しなければなりません。 
  例えば、あるExcel ファイルにContacts シートが含まれています。Excel ODBC ドライバでこのテーブルを参照するには、テーブル名に $ 文字を追加します。つまりクエリでテーブル名を指定するには Contacts$ とします。 
  もし、Contacts$ と指定し、Excel ODBC ドライバが "Syntax error in from clause" のエラーを返す場合、テーブル名を角カッコで囲みます。つまりテーブル名を [Contacts$] のように指定します。
447 SQLWays Documentation Copyright © 1999-2015 
よくある質問 
この FAQ はSQLWaysの使用に関するよくある質問の回答があります。FAQ はテクニカルサポートが受けた新たな質問により随時更新されます。
•FAQ: データベーススキーマ (DDL) のみエクスポート
•FAQ: データのみエクスポート
ここで回答が得られない場合には私たちのテクニカルサポートsupport@ispirer.com までメッセージをお寄せください。
FAQ: データベーススキーマ (DDL) のみエクスポート 
このセクションは、DDL (Data Definition Language) オプションの設定によりソースデータベースのスキーマのみをエクスポートする方法について説明します。 
  SQLWays はソースデータベースのオブジェクト定義をエクスポートする際に SQL スクリプトを生成します。これらのスクリプトはターゲットデータベースにデータベースオブジェクトを生成するDDLステートメントを含みます。 
•   スキーマ名を省略するには？ 
449 SQLWays Documentation Copyright © 1999-2015 
スキーマ名を省略するには？ 
Q: スキーマ名を省略するには？ 
A: SQLWays ウィザード[DDL]オプションページ 
ウィザードの Set DDL and Data Options ページ/DLL Options/ SQL Scripts へ行き、Omit schema names in SQL scripts ボックスでYes を選択し、SQLスクリプト内のDDLステートメントでのスキーマ (オーナー) 名を省略します。 これにより、ユーザのデフォルトスキーマ (オーナー) 名が使用されます。 
FAQ: データのみエクスポート 
このセクションでは、general エクスポートオプションの設定によりターゲットデータベースのデータのみをエクスポートする方法について説明します。  
•   小数点文字を変更するには？ 
•   改行文字を変更するには？ 
•   SQLWaysがサポートするエクスポートファイルの形式は? 
451 SQLWays Documentation Copyright © 1999-2015 
小数点文字を変更するには？ 
Q: 小数点文字を変更するには？ 
SQLWays ウィザード 
ウィザードにて Set DDL and Data Options ページ/Data Options/ Formats の、Decimal point ボックスで文字を変更します。
SQLWays コマンドライン 
コマンドラインにて DecPoint の値を指定するには、次の 構文を使用します： /DECPT=小数点文字  小数点文字 の値は sqlways.ini 初期化ファイルの[Data] サブセクションで変更する事ができます。 
例えば、0x2c 小数点文字はカンマを示します。 
       
改行文字を変更するには？ 
Q: 改行文字を変更するには？ 
A: テキストファイルで使われる改行文字は SQLWays ウィザード、コマンドライン、初期化ファイルにて指定、変更する事ができます。   • ウィザードにて変更する場合、ウィザードのSet DDL and Data Optionsページ / Data Options/ Files へ行き、Line delimeter ボックスの値を変更します。   • コマンドラインにて値を変更する場合、コマンドラインウィンドウを開き、LineDelimiter の値を次の構文で指定します：/LDEL=LineDelimiter   • 初期化ファイルにて値を変更する場合、Ispirer¥SQLWays 3.7¥sqlways.ini ファイルを開き、 Data conversion options の line_delimiter= の値を変更します 
453 SQLWays Documentation Copyright © 1999-2015 
SQLWaysがサポートするエクスポートファイルの形式は？
SQLWays はソースデータベースのデータを ASCII テキストファイル (エクスポートファイル)にエクスポートします。選択したターゲットデータベースにより、データの転送に最も適したエクスポートファイルの形式は以下の通りです：
カラム区切り (CSV) 出力フォーマット、固定長出力フォーマット (FIX)、タブ区切り出力フォーマット (TAB)、SQL INSERT ステートメント (INS)、 XML 出力フォーマット (XML)、または Btrieve ASCII 出力フォーマット (BTR)。 
ターゲットデータベースが Oracle, IBM DB2 または未指定の場合、デフォルトの出力フォーマットは CSV 形式です。 
ターゲットデータベースが Microsoft SQL Server, Sybase または MySQLの場合、デフォルトの出力フォーマットは TAB 形式です。 
ターゲットデータベースが Pervasive の場合、デフォルトの出力フォーマットは BTR 形式です。 
       
Ispirer Systems のリソースとコンタクト先 
Ispirer Systems のカスタマ向け情報リソースのガイド 
私たちはIspirer Systems のソフトウェアを利用するお客様に満足いただけるよう努力しています。ここではIspirer Systems の重要な顧客であるあなたに提供するリソースおよび情報を示しています。   以下の様々なリソースがお客様の疑問や問題の解決、および他の顧客と同様にIspirer Systemsのチームとコンタクトするために役立ちます。  
•   オンラインドキュメント 
•   テクニカルサポート 
•   注文の方法 
455 SQLWays Documentation Copyright © 1999-2015 
Online Documentation 
Ispirer Systems 製品の最新版のマニュアルはHTMLおよびPDF形式で提供されており、Ispirer Systems のウェブサイトからダウンロードすることができます。
•プロダクト概要
•SQLWays ドキュメント
http://www.ispirer.com/wiki/ 
テクニカルサポート 
テクニカルサポートは電子メール support@ispirer.com にて月曜から金曜まで受け付けています。   私たちのサポート担当は開発チームと密接に連携作業しており、私たちのテストセンターで様々なデータベースの問題をテストする事ができます。   私たちは全てのユーザに無償のテクニカルサポートを提供しており、最善を尽くし迅速な回答を行っています。   エンハンスサポート契約を結んでいる顧客は全てのリクエストが優先的に処理されます。  
457 SQLWays Documentation Copyright © 1999-2015 
以下のような標準の４つのサポートに加えて、Ispirer は個別の移行プロジェクトおよびサービスを提供しています。無償のお見積りを致しますのでお問い合わせください。
Support Types 
•スタンダード (データベース移行のみ)
•プロフェッショナル (データベース移行のみ)
•エンタープライズ (データベース移行のみ)
•コーポレート (データベース移行およびアプリケーション変換)
第３者にソフトウェアベースのソリューションを提供するシステムインテグレータ、コンサルタント、VAR、ISV、リセラー、デベロッパー、サービスプロバイダ、またはITプロフェッショナルの商用利用には、ソフトウェアが使用されるプロジェクト毎にライセンスが必要です（パートナー向けディスカウント有）。
顧客には１年間の無償アップグレードが提供されます。詳しくはSQLWays 使用許諾書を参照してください。 
支払方法： クレジットカード、注文書、小切手、電信送金
 United States 
113 East 85th Street Beach Haven Crest, NJ 08008 (609) 607 0778 (609) 828 6016 sales@ispirer.com 
Payments accepted in US Dollars. 
 United Kingdom 
Oxon, Oxford +44 (0) 7878 360169 sales@ispirer.com 
 Belarus 
Kulman 2-431 Minsk, Belarus +375 17 292 61 61 +375 29 195 98 47 sales@ispirer.com 
詳しい情報は http://www.ispirer.jp/request-quote/ からお問い合わせください 
法律上の表示 
•SQLWays 使用許諾書
459 SQLWays Documentation Copyright © 1999-2015 
SQLWays License Agreement 
Copyright (C) 1999-2015 Ispirer Systems Ltd. All Rights Reserved. 
GENERAL TERMS 
PLEASE READ THIS AGREEMENT CAREFULLY BEFORE USING SQLWAYS (THE "SOFTWARE"). ISPIRER SYSTEMS WILL LICENSE THE SOFTWARE TO YOU ONLY IF YOU FIRST ACCEPT THE TERMS OF THIS AGREEMENT. BY USING THE SOFTWARE YOU AGREE TO THESE TERMS. IF YOU DO NOT AGREE TO THE TERMS OF THIS AGREEMENT, YOU MUST REMOVE THE SOFTWARE FROM YOUR STORAGE DEVICES AND CEASE TO USE THE SOFTWARE. 
The parties to this Agreement are the Ispirer Systems Ltd and the User. The "User" is the person or organization that orders and will pay the fee for the use of one or more products offered by Ispirer Systems Ltd. The Software is owned by Ispirer Systems Ltd, and is copyrighted and licensed, not sold. The term "Software" means the original Software and all whole or partial copies of it. The Software consists of machine-readable instructions, its components, data, visual content (such as images, text, or pictures), and related licensed materials. 
DEMONSTRATION LICENSE 
This is not free Software. The User is hereby licensed by Ispirer Systems Ltd to use one copy of the Software, on one (1) computer or workstation, for demonstration purposes without charge. To get a Demonstration license key The User should contact Ispirer Systems. If the User wishes to use this Software after the demonstration period they are required to contact Ispirer Systems. 
The Demonstration version converts all tables, stored procedures and other database objects and exports all rows in each table and converts all lines in each stored procedure, trigger or function. 
Unregistered use of the Software after the demonstration period is in violation of U.S. and international copyright laws. 
LICENSE - USE OF THE SOFTWARE 
Ispirer Systems Ltd grants the User a nonexclusive, non-transferrable license to use the Software. 
Each licensed copy of SQLWays may be used by a single person on one or more computers, or installed on a single workstation and used nonsimultaneously by multiple people, but not both. 
LICENSE LIMITATIONS 
The User is expected to use SQLWays in accordance with specific license limitations that restrict the total number of particular objects - tables, functions, stored procedures and triggers - available in each of the databases with which SQLWays is used (e.g. if one database has 100 objects and the other 300, you are to choose the 300-object license and so forth). 
The number of converted indexes, constraints, views and other objects is not limited as well as the number of table rows and SQL code lines. Neither do any of the licenses stipulate any limitations to the number and type of databases. 
TECHNICAL SUPPORT 
Technical support is included in the cost of license and implies technical assistance, prompt answers to any product-related questions (provided within 12-24 hours maximum) and expert advice on database migration issues. 
MAINTENANCE PACKAGE 
The user acquiring a license with the maintenance package is entitled to the following benefits: 
• Product customization to your particular needs 
• Fixes within a couple of business days (up to 2 weeks for complex issues) 
• Priority handling of all incoming requests 
NO WARRANTY 
The Software is being delivered to the User "AS IS" and Ispirer Systems Ltd makes no warranty as to its use or performance. 
ISPIRER SYSTEMS LTD DOES NOT AND CANNOT WARRANT THE PERFORMANCE OR RESULTS THE CUSTOMER MAY OBTAIN BY USING THE SOFTWARE. EXCEPT FOR ANY WARRANTY, CONDITION, REPRESENTATION OR TERM TO THE EXTENT TO WHICH THE SAME CANNOT OR MAY NOT BE EXCLUDED OR LIMITED BY LAW APPLICABLE TO THE CUSTOMER IN THE CUSTOMER'S JURISDICTION, ISPIRER SYSTEMS LTD MAKES NO WARRANTIES CONDITIONS, REPRESENTATIONS, OR TERMS (EXPRESS OR IMPLIED WHETHER BY STATUTE, COMMON LAW, CUSTOM, USAGE OR OTHERWISE) AS TO ANY MATTER INCLUDING WITHOUT LIMITATION OF THIRD PARTY RIGHTS, MERCHANTABILITY, INTEGRATION, SATISFACTORY QUALITY, OR FITNESS FOR ANY PARTICULAR PURPOSE. 
LIMITATION OF LIABILITY 
IN NO EVENT WILL ISPIRER SYSTEMS LTD BE LIABLE TO THE CUSTOMER FOR ANY DAMAGES, CLAIMS OR COSTS WHATSOEVER OR ANY CONSEQUENTIAL, INDIRECT, INCIDENTAL DAMAGES, OR ANY LOST PROFITS OR LOST SAVINGS, EVEN IF AN ISPIRER SYSTEMS LTD REPRESENTATIVE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS OR FOR ANY CLAIM BY ANY THIRD PARTY. THE FOREGOING LIMITATIONS AND EXCLUSIONS APPLY TO THE EXTENT PERMITTED BY APPLICABLE LAW IN THE CUSTOMER'S JURISDICTION. ISPIRER SYSTEMS LTD' AGGREGATE LIABILITY UNDER OR IN CONNECTION WITH THIS AGREEMENT SHALL BE LIMITED TO THE AMOUNT PAID FOR THE SOFTWARE, IF ANY. 
APPLICABLE LAW AND SETTLEMENT OF DISPUTES 
This agreement shall be governed by law of state of New York as well as by relevant international intellectual property law treaties. Any controversy or claim arising out of or relating to this licence agreement, or the breach thereof, shall be settled by arbitration administered by the American Arbitration Association under its Commercial Arbitration Rules, and judgment on the award rendered by the arbitrator(s) may be entered in any court having jurisdiction thereof. If the AAA is selected as the administrating agency, the claim is filed together with a filing fee based upon the amount of the claim. 
461 SQLWays Documentation Copyright © 1999-2015 
SQLWays および Ispirer は Ispirer Systems Ltd の商標です。他の製品名は各社の商標です。 