9.3.3 定義系SQLの生成についての規則
-
搬出時(-eオプション)に,定義系SQLの生成(-oオプション)を指定した場合,定義系SQLの生成はしません。
-
定義系SQLを生成する場合,SQL文の生成順序は搬出順となります。
-
次に示す表,手続き,及び関数の定義系SQLは生成されません。
-
抽象データ型を含む表定義(CREATE TABLE)
-
手続きのパラメタのデータ型として抽象データ型を指定している手続き(CREATE PROCEDURE)
-
手続き定義中の手続き(CREATE PROCEDURE)
-
抽象データ型内で宣言されている手続き及び関数(CREATE TYPE)
-
インデクス型を指定したインデクス定義(CREATE INDEX)
-
関数定義(CREATE FUNCTION)
-
-
生成された定義系SQLには,データベース定義ユティリティの入力ファイルとして利用できるように,行の最後にセミコロン(;)が付きます。ただし,CREATE PROCEDURE,及びCREATE TRIGGERの場合はend_proc;が付きます。
-
CREATE PROCEDURE,及びCREATE TRIGGERを生成する場合,SQL最適化オプション,及びSQL拡張最適化オプションの指定値は,数値に変換された形になります。
-
表の定義系SQLを生成する場合,その表に外部キー,又は検査制約が定義されているときは,表の定義系SQLと同時に,外部キー,及び検査制約の定義系SQLも生成します。この外部キー,及び検査制約の定義系SQLを生成する場合,外部キー,及び検査制約の制約名の定義位置は,クライアント環境定義のPDCNSTRNTNAMEとシステム定義のpd_constraint_nameオペランドの指定値によって決まります。PDCNSTRNTNAMEについてはマニュアル「HiRDB Version 9 UAP開発ガイド」を,pd_constraint_nameオペランドについてはマニュアル「HiRDB Version 9 システム定義」を参照してください。
-
生成された定義系SQLの改行条件を次に示します。
生成された定義系SQL
改行条件
CREATE TABLE
-
CREATEから表識別子まで
-
列定義ごと
-
表格納用RDエリアごと
-
表オプションごと
-
外部キーごと
-
検査制約定義ごと
-
WITH PROGRAM
-
1行が80バイトを超える場合は,80バイトごと※
CREATE INDEX
-
CREATEからインデクス識別子まで
-
ONから表識別子まで
-
列定義ごと
-
インデクス格納用RDエリアごと
-
インデクスオプションごと
-
1行が80バイトを超える場合は,80バイトごと※
COMMENT
1行が80バイトを超える場合は,80バイトごと※
CREATE VIEW
-
CREATEからASまで
-
1行が80バイトを超える場合は,80バイトごと※
CREATE PROCEDURE
-
CREATEからパラメタモード指定まで
-
定義ソース文中にある改行記号
-
SQLコンパイルオプション
-
SQL手続き文
-
1行が80バイトを超える場合は,80バイトごと※
CREATE TRIGGER
-
CREATEからトリガ動作
-
定義ソース文中にある改行記号
-
SQLコンパイルオプション
-
WITH PROGRAM
-
1行が80バイトを超える場合は,80バイトごと※
- 注※
-
システム共通定義pdsysのpd_sql_simple_comment_useオペランドの値による動作を次の表に示します。
項番
システム共通定義pdsysの pd_sql_simple_comment_useオペランドの値
動作
1
N
改行する
2
Y
改行しない
単純注釈を使用するには,pd_sql_simple_comment_useオペランドをYにする必要があります。搬出したSQL文中の単純注釈の有無と,pd_sql_simple_comment_useオペランドに対する指定が合っていない場合,搬入時にSQL構文エラーとなります。
これらの組み合わせについて次に示します。
項番
搬出したSQL文中の単純注釈有無
搬入時のpd_sql_simple_comment_useの値
Y
N
1
なし
○
○
2
あり
○
×
(凡例)
○:SQL構文エラーにはなりません。
×:SQL構文エラー(KFPA11105-E)となります。
-
-
文字集合UTF-16を指定したCHAR型の列を,キーレンジ分割又はマトリクス分割(境界値指定のキーレンジ分割)の分割キーとして指定した表の場合,分割キーの長さが列の定義長を超えるときは,その表の定義系SQLは生成できません。