付録F.1 SQLのデータ型とC言語のデータ記述
SQLのデータ型とC言語のデータ記述の対応を示します。
なお,データの受け渡しには,対応するデータ型以外に,変換,又は代入できるデータ型も使用できます。
- 〈この項の構成〉
(1) SQLのデータ型とC言語のデータ記述
SQLのデータ型とC言語のデータ記述を次の表に示します。
SQLのデータ型 |
C言語のデータ記述 |
備 考 |
|
---|---|---|---|
SMALLINT |
short 変数名; |
− |
|
INTEGER |
long 変数名; |
− |
|
DECIMAL [(p[,s])] |
SQL TYPE IS DECIMAL(p,s) 変数名;※5 |
1≦p≦38,0≦s≦p |
|
SMALLFLT,REAL |
float 変数名; |
− |
|
FLOAT(DOUBLE PRECISION) |
double 変数名; |
− |
|
CHAR[(n)] [CHARACTER SET 文字集合指定] |
char [CHARACTER SET[IS] 文字集合指定] 変数名[n+1];※1 |
1≦n≦30000 文字集合指定:[MASTER.]EBCDIK |
|
CHAR[(2n)] CHARACTER SET 文字集合指定 |
char CHARACTER SET[IS] 文字集合指定 変数名[2n+2]; |
1≦n≦15000 文字集合指定:[MASTER.]UTF16 |
|
SQL TYPE IS CHAR(2n) CHARACTER SET[IS] 文字集合指定 変数名;※10 |
|||
VARCHAR(n) [CHARACTER SET 文字集合指定] |
struct{ short 変数名1; char 変数名2[n]; }[CHARACTER SET[IS] 文字集合指定] 構造体名; |
1≦n≦32000 変数名1:文字列長(バイト数) 変数名2:文字列 文字集合指定:[MASTER.]EBCDIK |
|
SQL TYPE IS VARCHAR(n) [CHARACTER SET[IS] 文字集合指定] 変数名;※6 |
|||
VARCHAR [CHARACTER SET[IS] 文字集合指定] 変数名[n+1];※9 |
|||
VARCHAR(2n) CHARACTER SET 文字集合指定 |
struct{ short 変数名1; char 変数名2[2n]; }CHARACTER SET[IS] 文字集合指定 構造体名; |
1≦n≦16000 変数名1:文字列長 変数名2:文字列 文字列長: バイト数で,2の倍数 文字集合指定:[MASTER.]UTF16 |
|
SQL TYPE IS VARCHAR(2n) CHARACTER SET[IS] 文字集合指定 変数名;※11 |
|||
VARCHAR CHARACTER SET[IS] 文字集合指定 変数名[2n+2];※10 |
|||
NCHAR[(n)] |
char 変数名[2n+1];※1 |
1≦n≦15000 |
|
NVARCHAR(n) |
struct{ short 変数名1; char 変数名2[2n]; }構造体名; |
1≦n≦16000 変数名1:文字列長(文字数) 変数名2:文字列 |
|
SQL TYPE IS NVARCHAR(n) 変数名;※6 |
|||
MCHAR[(n)] |
char 変数名[n+1];※1 |
1≦n≦30000 |
|
MVARCHAR(n) |
struct{ short 変数名1; char 変数名2[n]; }構造体名; |
1≦n≦32000 変数名1:文字列長(バイト数) 変数名2:文字列 |
|
SQL TYPE IS MVARCHAR(n) 変数名;※6 |
|||
DATE |
char 変数名[11];※2 |
− |
|
TIME |
char 変数名[9];※2 |
− |
|
INTERVAL YEAR TO DAY |
SQL TYPE IS DECIMAL(8,0) 変数名;※5 |
− |
|
INTERVAL HOUR TO SECOND |
SQL TYPE IS DECIMAL(6,0) 変数名;※5 |
− |
|
TIMESTAMP[(p)] |
char 変数名[n+1];※2 |
p=0の場合はn=19 p=2の場合はn=21,22 p=4の場合はn=23,24 p=6の場合はn=25,26 |
|
ROW※3 |
char 変数名[n+1]; |
1≦全体長≦30000 |
|
BLOB |
SQL TYPE IS BLOB(n{K|M|G}) 変数名;※4 |
単位省略時: 1≦n≦2147483647 単位がK: 1≦n≦2097152 単位がM: 1≦n≦2048 単位がG: 1≦n≦2 |
|
BINARY(n) |
struct{ long 変数名1; char 変数名2[n]; }構造体名; |
1≦n≦2147483647 変数名1:文字列長(バイト数) 変数名2:文字列 |
|
SQL TYPE IS BINARY(n) 変数名;※7 |
|||
BLOB位置付け子 |
SQL TYPE IS BLOB AS LOCATOR 変数名;※8 |
− |
|
BINARY位置付け子 |
SQL TYPE IS BINARY AS LOCATOR 変数名;※8 |
− |
|
標識変数 |
BLOB,BINARY,BLOB位置付け子,BINARY位置付け子以外 |
short 変数名; |
− |
BLOB,BINARY,BLOB位置付け子,BINARY位置付け子 |
long 変数名; |
||
SQL文 |
struct{ long 変数名1; char 変数名2[n]; }構造体名; |
1≦n≦2000000 変数名1:文字列長(バイト数) 変数名2:文字列 |
- (凡例)
-
n:長さ(バイト)
p:精度(全体のけた数)
s:位取り(小数点以下のけた数)
−:なし
- 注
-
64ビットモードの場合,longの代わりにintを使用してください。
- 注※1
-
SQLのデータ型(CHAR(n),NCHAR(n),MCHAR(n))と,C言語のデータ型(char[n+1],char[2n+1],char[n+1])との間での変換規則を示します。
- ・入力時
-
-
char[n+1]からCHAR(n)への変換
-
char[2n+1]からNCHAR(n)への変換
-
char[n+1]からMCHAR(n)への変換
C言語の文字列からHiRDBが受け取る固定長文字列の長さは,先頭からナル文字の一つ前までの長さとします。なお,n+1個の配列要素の中にナル文字がない場合,長さをnとします。
-
- ・出力時
-
-
CHAR(n)からchar[n+1]への変換
-
NCHAR(n)からchar[2n+1]への変換
-
MCHAR(n)からchar[n+1]への変換
文字列の終端にナル文字を付け加え,UAPでの文字列長はSQLの文字列長に1を加えます。
-
- 注※2
-
動的SQLで日付データ(DATE)を検索する場合,DESCRIBE文で取得した検索項目情報のデータコードを文字データ型に,データ長を10バイト以上に設定する必要があります。また,動的SQLで時刻データを検索する場合,DESCRIBE文で取得した検索項目情報のデータコードを文字データ型に,データ長を8バイト以上に設定する必要があります。
動的SQLで時刻印データ(TIMESTAMP)を検索する場合,次のように設定してください。
-
DESCRIBE文で取得した検索項目情報のデータコードは,文字データ型にしてください。
-
pが0の場合は,データ長を19バイト以上にしてください。pが2,4,又は6の場合は,20+pバイト以上にしてください。
-
- 注※3
-
HiRDBサーバとHiRDBクライアントのエンディアンが同じ場合にだけ,ROW型を使用できます。
- 注※4
-
BLOBのUAPの記述は,内部的に次のように展開されます。
struct{ long 変数名_reserved; … 1 unsigned long 変数名_length; … 2 char 変数名_data[m]; … 3 }変数名
[説明]
-
変数名_reservedは,使用しません。64ビットモードの場合は,int 変数名_reserved;となります。
-
変数名_lengthは,BLOBの実際の長さになります。64ビットモードの場合は,unsigned int 変数名_length;となります。
-
変数名_data[m]は,BLOBのデータ格納領域(mは実際のデータ長)になります。
-
- 注※5
-
DECIMALのUAPの記述は,内部的に次のように展開されます。
unsigned char 変数名[↓p/2↓+1];
DECIMALのデータは1バイトで2けたの数字を表現します。符号は,右端のバイトの右4ビットで表します。そのため,偶数けたのDECIMAL型の場合,左端の左4ビットに0を補う必要があります。0以外の値は設定しないでください。
標準的な符号表現を次に示します。HiRDBでのDECIMAL型の符号については,マニュアル「HiRDB Version 9 SQLリファレンス」を参照してください。
符号の16進数表現
意 味
X'C'
正の符号とみなします。正数には0を含みます。
X'D'
負の符号とみなします。
(記述例)
- 123.4567の場合(奇数けた)
-
unsigned char ex1[4]={0x12,0x34,0x56,0x7c} ;
- -123.456の場合(偶数けた)
-
unsigned char ex2[4]={0x01,0x23,0x45,0x6d} ;
- 0の場合(奇数けた)
-
unsigned char ex3[1]={0x0c} ;
- 注※6
-
内部的に次のように展開されます。
struct{ short len; char str[n]; }変数名
NVARCHARの場合は,str[2n]になります。
- 注※7
-
内部的に次のように展開されます。
struct{ long len; char str[n]; }変数名
なお,64ビットモードの場合,「long len;」は「int len;」になります。
- 注※8
-
内部的に次のように展開されます。
unsigned long 変数名;
なお,64ビットモードの場合,「unsigned long 変数名;」は「unsigned int 変数名;」になります。
- 注※9
-
内部的に次のように展開されます。
char 変数名[n+1];
文字列長は,先頭からNULL文字の一つ前までの長さになります。なお,C言語の文字列を受け取る場合,n+1個の配列要素中にNULL文字がないときは,エラーとなります。
- 注※10
-
内部的に次のように展開されます。
<プリプロセサの-XU16オプションで型指定子を指定しなかった場合> char 変数名[2n+2]; <プリプロセサの-XU16オプションで型指定子を指定した場合> 型指定子 変数名[n+1];
-XU16オプションについては,「UNIX環境でのプリプロセス」,又は「Windows環境でのプリプロセス」を参照してください。
- 注※11
-
内部的に次のように展開されます。
<プリプロセサの-XU16オプションで型指定子を指定しなかった場合> struct{ short len; char str[2n]; } 変数名; <プリプロセサの-XU16オプションで型指定子を指定した場合> struct{ short len; 型指定子 str[n]; } 変数名;
-XU16オプションについては,「UNIX環境でのプリプロセス」,又は「Windows環境でのプリプロセス」を参照してください。
(2) 配列を使用した場合のSQLのデータ型とC言語のデータ記述
配列を使用した場合のSQLのデータ型とC言語のデータ記述を次の表に示します。
SQLのデータ型 |
C言語のデータ記述 |
備 考 |
|
---|---|---|---|
SMALLINT |
short 変数名[m]; |
− |
|
INTEGER |
long 変数名[m]; |
− |
|
DECIMAL[(p[,s])] |
SQL TYPE IS DECIMAL(p,s) 変数名[m]; |
1≦p≦38,0≦s≦p |
|
SMALLFLT, REAL |
float 変数名[m]; |
− |
|
FLOAT (DOUBLE PRECISION) |
double 変数名[m]; |
− |
|
CHAR[(n)] [CHARACTER SET 文字集合指定] |
char [CHARACTER SET[IS] 文字集合指定] 変数名[m][n+1]; |
1≦n≦30000 文字集合指定:[MASTER.]EBCDIK |
|
CHAR[(2n)] CHARACTER SET 文字集合指定 |
char CHARACTER SET[IS] 文字集合指定 変数名[m][2n+2]; |
1≦n≦15000 文字集合指定:[MASTER.]UTF16 |
|
SQL TYPE IS CHAR(2n) CHARACTER SET[IS] 文字集合指定 変数名[m]; |
|||
VARCHAR(n) [CHARACTER SET 文字集合指定] |
struct{ short 変数名1; char 変数名2[n]; }[CHARACTER SET[IS] 文字集合指定] 構造体名[m]; |
1≦n≦32000 文字集合指定:[MASTER.]EBCDIK |
|
SQL TYPE IS VARCHAR(n) [CHARACTER SET[IS] 文字集合指定] 変数名[m]; |
|||
VARCHAR [CHARACTER SET[IS] 文字集合指定] 変数名[m][n+1]; |
|||
VARCHAR(2n) CHARACTER SET 文字集合指定 |
struct{ short 変数名1; char 変数名2[2n]; }CHARACTER SET[IS] 文字集合指定 構造体名[m]; |
1≦n≦16000 変数名1:文字列長 変数名2:文字列 文字列長: バイト数で,2の倍数 文字集合指定: [MASTER.]UTF16 |
|
SQL TYPE IS VARCHAR(n) CHARACTER SET[IS] 文字集合指定 変数名[m]; |
|||
VARCHAR CHARACTER SET[IS] 文字集合指定 変数名[m][2n+2]; |
|||
NCHAR[(n)] |
char 変数名[m][2n+1]; |
1≦n≦15000 |
|
NVARCHAR(n) |
struct{ short 変数名1; char 変数名2[2n]; }構造体名[m]; |
1≦n≦16000 |
|
SQL TYPE IS NVARCHAR(n) 変数名[m]; |
|||
MCHAR[(n)] |
char 変数名[m][n+1]; |
1≦n≦30000 |
|
MVARCHAR(n) |
struct{ short 変数名1; char 変数名2[n]; }構造体名[m]; |
1≦n≦32000 |
|
SQL TYPE IS MVARCHAR(n) 変数名[m]; |
|||
DATE |
char 変数名[m][11]; |
− |
|
TIME |
char 変数名[m][9]; |
− |
|
TIMESTAMP[(p)] |
char 変数名[m][n+1]; |
p=0の場合はn=19 p=2の場合はn=21,22 p=4の場合はn=23,24 p=6の場合はn=25,26 |
|
INTERVAL YEAR TO DAY |
SQL TYPE IS DECIMAL(8,0) 変数名[m]; |
− |
|
INTERVAL HOUR TO SECOND |
SQL TYPE IS DECIMAL(6,0) 変数名[m]; |
− |
|
ROW |
char 変数名[m][n+1]; |
1≦n≦30000 |
|
BLOB |
記述できない |
− |
|
BINARY |
struct{ long 変数名1; char 変数名2[n]; }構造体名[m]; |
配列を使用したFETCHの場合 4≦n≦2147483644(nは4の倍数であること) 配列を使用したFETCH以外の場合 4≦n≦32000(nは4の倍数であること) |
|
SQL TYPE IS BINARY(n) 変数名[m]; |
|||
BLOB位置付け子 |
記述できない |
− |
|
BINARY位置付け子 |
SQL TYPE IS BINARY AS LOCATOR 変数名[m]; |
− |
|
標識変数 |
BINARY,BINARY位置付け子以外 |
short 変数名[m]; |
− |
BINARY,BINARY位置付け子 |
long 変数名[m]; |
− |
|
SQL文 |
記述できない |
− |
- (凡例)
-
m:配列の要素数(1〜4,096)
n:長さ(バイト)
p:精度(全体のけた数)
s:位取り(小数点以下のけた数)
−:なし
- 注
-
64ビットモードの場合,longの代わりにintを使用してください。
(3) 繰返し列を使用した場合のSQLのデータ型とC言語のデータ記述
繰返し列を使用した場合のSQLのデータ型とC言語のデータ記述を次の表に示します。
SQLのデータ型 |
C言語のデータ記述 |
備 考 |
---|---|---|
SMALLINT |
PD_MV_SINT(m) 変数名; |
− |
INTEGER |
PD_MV_INT(m) 変数名; |
− |
DECIMAL |
PD_MV_DEC(m,p,s) 変数名; |
1≦p≦38,0≦s≦p |
SMALLFLT, REAL |
PD_MV_SFLT(m) 変数名; |
− |
FLOAT (DOUBLE PRECISION) |
PD_MV_FLT(m) 変数名; |
− |
CHAR[(n)] |
PD_MV_CHAR(m,n) 変数名; |
1≦n≦30000 |
VARCHAR(n) |
PD_MV_VCHAR(m,n) 変数名; |
1≦n≦32000 |
PD_MV_CVCHAR(m,n) 変数名; |
||
NCHAR[(n)] |
PD_MV_NCHAR(m,n) 変数名; |
1≦n≦15000 |
NVARCHAR(n) |
PD_MV_NVCHAR(m,n) 変数名; |
1≦n≦16000 |
MCHAR[(n)] |
PD_MV_CHAR(m,n) 変数名; |
1≦n≦30000 |
MVARCHAR(n) |
PD_MV_VCHAR(m,n) 変数名; |
1≦n≦32000 |
DATE |
PD_MV_CHAR(m,10) 変数名; |
− |
TIME |
PD_MV_CHAR(m,8) 変数名; |
− |
TIMESTAMP[(p)] |
PD_MV_CHAR(m,n) 変数名; |
p=0の場合はn=19 p=2の場合はn=21,22 p=4の場合はn=23,24 p=6の場合はn=25,26 |
INTERVAL YEAR TO DAY |
PD_MV_DEC(m,8,0) 変数名; |
− |
INTERVAL HOUR TO SECOND |
PD_MV_DEC(m,6,0) 変数名; |
− |
ROW |
記述できない |
− |
BLOB |
記述できない |
− |
BINARY |
記述できない |
− |
標識変数(BLOB,BINARY,BLOB位置付け子,BINARY位置付け子以外) |
PD_MV_SINT(m) 変数名; |
− |
SQL文 |
記述できない |
− |
- (凡例)
-
m:繰返し列の最大要素数(2〜30,000)
n:長さ(バイト)
p:精度(全体のけた数)
s:位取り(小数点以下のけた数)
−:なし
(4) 埋込み変数の参照・設定に使用するマクロ
繰返し列を使用した場合のSQLのデータ型とC言語のデータ記述では,各データ型の埋込み変数の参照・設定に,専用のマクロを使用します。埋込み変数の参照・設定に使用するマクロを次の表に示します。
SQLのデータ型 |
マクロ名 |
参照・設定するデータ |
データ型 |
---|---|---|---|
SMALLINT |
PD_MV_SINT_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_SINT_DATA(変数名,m) |
繰返しの各要素 |
short |
|
INTEGER |
PD_MV_INT_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_INT_DATA(変数名,m) |
繰返しの各要素 |
long※ |
|
DECIMAL[(p[,s])] |
PD_MV_DEC_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_DEC_DATA(変数名,m) |
繰返しの各要素の10進数の先頭アドレス |
unsigned |
|
SMALLFLT, REAL |
PD_MV_SFLT_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_SFLT_DATA(変数名,m) |
繰返しの各要素 |
float |
|
FLOAT (DOUBLE PRECISION) |
PD_MV_FLT_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_FLT_DATA(変数名,m) |
繰返しの各要素 |
double |
|
CHAR[(n)] |
PD_MV_CHAR_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_CHAR_DATA(変数名,m) |
繰返しの各要素の,文字列の先頭アドレス |
char[ ] |
|
VARCHAR(n) |
PD_MV_VCHAR_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_VCHAR_LEN(変数名,m) |
繰返しの各要素の,文字列の実長 |
short |
|
PD_MV_VCHAR_STR(変数名,m) |
繰返しの各要素の,文字列のアドレス |
char[ ] |
|
PD_MV_CVCHAR_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
|
PD_MV_CVCHAR_DATA(変数名,m) |
繰返しの各要素の,文字列のアドレス |
char[ ] |
|
NCHAR[(n)] |
PD_MV_NCHAR_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_NCHAR_DATA(変数名,m) |
繰返しの各要素の,文字列の先頭アドレス |
char[ ] |
|
NVARCHAR(n) |
PD_MV_NVCHAR_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_NVCHAR_LEN(変数名,m) |
繰返しの各要素の,文字列の実長 |
short |
|
PD_MV_NVCHAR_STR(変数名,m) |
繰返しの各要素の,文字列の先頭アドレス |
char[ ] |
|
MCHAR[(n)] |
PD_MV_CHAR_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_CHAR_DATA(変数名,m) |
繰返しの各要素の,文字列の先頭アドレス |
char[ ] |
|
MVARCHAR(n) |
PD_MV_VCHAR_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_VCHAR_LEN(変数名,m) |
繰返しの各要素の,文字列の実長 |
short |
|
PD_MV_VCHAR_STR(変数名,m) |
繰返しの各要素の,文字列のアドレス |
char[ ] |
|
DATE |
CHAR(10)と同じ |
− |
− |
TIME |
CHAR(8)と同じ |
− |
− |
TIMESTAMP[(p)] |
CHAR(n)と同じ p=0の場合はn=19 p=2の場合はn=21,22 p=4の場合はn=23,24 p=6の場合はn=25,26 |
− |
− |
INTERVAL YEAR TO DAY |
DECIMAL(8,0)と同じ |
− |
− |
INTERVAL HOUR TO SECOND |
DECIMAL(6,0)と同じ |
− |
− |
標識変数 |
PD_MV_SINT_CNT(変数名) |
繰返し列全体の標識 |
long※ |
PD_MV_SINT_DATA(変数名,m) |
繰返し列の各要素の標識 |
short |
- (凡例)
-
−:該当しません。
m:繰返し列の各要素を示す番号(0〜m-1)
n:長さ(バイト)
p:精度(全体のけた数)
s:位取り(小数点以下のけた数)
- 注※
-
64ビットモードの場合,intとなります。
繰返し列用の埋込み変数を参照・設定するマクロの使用例を次に示します。
EXEC SQL BEGIN DECLARE SECTION; char xname[5]; PD_MV_SINT(4) xmten; PD_MV_CHAR(4,5) xmkamoku; EXEC SQL END DECLARE SECTION; : strcpy(xname,"山田") PD_MV_SINT_DATA(xmten,0)=90; PD_MV_SINT_DATA(xmten,1)=65; PD_MV_SINT_DATA(xmten,2)=85; PD_MV_SINT_DATA(xmten,3)=55; PD_MV_SINT_CNT(xmten)=4; strcpy(PD_MV_CHAR_DATA(xmkamoku,0),"数学"); strcpy(PD_MV_CHAR_DATA(xmkamoku,1),"国語"); strcpy(PD_MV_CHAR_DATA(xmkamoku,2),"理科"); strcpy(PD_MV_CHAR_DATA(xmkamoku,3),"社会"); PD_MV_CHAR_CNT(xmkamoku)=4; EXEC SQL INSERT INTO 成績表(氏名,科目,成績) VALUES(:xname,:xmkamoku,:xmten);
(5) ポインタ変数とC言語のデータ記述
ポインタ変数とC言語のデータ記述を次の表に示します。
SQLのデータ型 |
C言語のデータ記述 |
備考 |
|
---|---|---|---|
SMALLINT |
short *変数名; |
− |
|
INTEGER |
long *変数名; |
− |
|
DECIMAL[(p[,s])] |
SQL TYPE IS DECIMAL(p,s) *変数名; |
1≦p≦38,0≦s≦p |
|
SMALLFLT,REAL |
float *変数名; |
− |
|
FLOAT (DOUBLE PRECISION) |
double *変数名; |
− |
|
CHAR[(n)] [CHARACTER SET 文字集合指定] |
char [CHARACTER SET[IS] 文字集合指定]*変数名; |
1≦n≦30000※ 文字集合指定:[MASTER.]EBCDIK |
|
CHAR[(2n)] CHARACTER SET 文字集合指定 |
SQL TYPE IS CHAR(2n) CHARACTER SET[IS] 文字集合指定 *変数名; |
1≦n≦15000 文字集合指定: [MASTER.]UTF16 |
|
VARCHAR(n) [CHARACTER SET 文字集合指定] |
struct { short 変数名1; char 変数名2[n]; } [CHARACTER SET[IS] 文字集合指定]*構造体名; |
1≦n≦32000 変数名1:文字列長(バイト数) 変数名2:文字列 文字集合指定:[MASTER.]EBCDIK |
|
SQL TYPE IS VARCHAR(n) [CHARACTER SET[IS] 文字集合指定] *変数名; |
|||
VARCHAR [CHARACTER SET[IS] 文字集合指定] *変数名;※ |
|||
VARCHAR(2n) CHARACTER SET 文字集合指定 |
struct { short 変数名1; char 変数名2[2n]; } CHARACTER SET[IS] 文字集合指定 *構造体名; |
1≦n≦16000 変数名1:文字列長 変数名2:文字列 文字列長: バイト数で,2の倍数 文字集合指定: [MASTER.]UTF16 |
|
SQL TYPE IS VARCHAR(2n) CHARACTER SET[IS] 文字集合指定 *変数名; |
|||
NCHAR[(n)] |
char *変数名; |
1≦n≦15000※ |
|
NVARCHAR(n) |
struct { short 変数名1; char 変数名2[2n]; } *構造体名; |
1≦n≦16000 変数名1:文字列長(文字数) 変数名2:文字列 |
|
SQL TYPE IS NVARCHAR(n) *変数名; |
|||
MCHAR[(n)] |
char *変数名; |
1≦n≦30000※ |
|
MVARCHAR(n) |
struct { short 変数名1; char 変数名2[n]; } *構造体名; |
1≦n≦32000 変数名1:文字列長(バイト数) 変数名2:文字列 |
|
SQL TYPE IS MVARCHAR(n) *変数名; |
|||
DATE※ |
char *変数名; |
− |
|
TIME※ |
char *変数名; |
− |
|
TIMESTAMP※ |
char *変数名; |
− |
|
INTERVAL YEAR TO DAY |
SQL TYPE IS DECIMAL(8,0) *変数名; |
− |
|
INTERVAL HOUR TO SECOND |
SQL TYPE IS DECIMAL(6,0) *変数名; |
− |
|
ROW |
char *変数名; |
1≦全体長≦30000※ |
|
BLOB |
SQL TYPE IS BLOB(n[{K|M|G}]) *変数名; |
単位を省略した場合: 1≦n≦2147483647 単位がKの場合: 1≦n≦2097152 単位がMの場合: 1≦n≦2048 単位がGの場合: 1≦n≦2 |
|
BINARY(n) |
struct { long 変数名1; char 変数名2[n]; } *構造体名; |
1≦n≦2147483647 |
|
SQL TYPE IS BINARY(n) *変数名; |
|||
BLOB位置付け子 |
SQL TYPE IS BLOB AS LOCATOR *変数名; |
− |
|
BINARY位置付け子 |
SQL TYPE IS BINARY AS LOCATOR *変数名; |
− |
|
標識変数 |
BLOB,BINARY,BLOB位置付け子,BINARY位置付け子以外 |
short *変数名; |
− |
BLOB,BINARY,BLOB位置付け子,BINARY位置付け子 |
long *変数名; |
||
SQL文 |
struct { long 変数名1; char 変数名2[n]; } *構造体名; |
1≦n≦2000000 |
|
SMALLINT ARRAY m |
PD_MV_SINT(m) *変数名; |
− |
|
INTEGER ARRAY m |
PD_MV_INT(m) *変数名; |
− |
|
DECIMAL[(p[,s])] ARRAY m |
PD_MV_DEC(m,p,s) *変数名; |
1≦p≦38,0≦s≦p |
|
SMALLFLT ARRAY m (REAL) |
PD_MV_SFLT(m) *変数名; |
− |
|
FLOAT ARRAY m (DOUBLE PRECISION) |
PD_MV_FLT(m) *変数名; |
− |
|
CHAR[(n)] ARRAY m,及び MCHAR[(n)] ARRAY m |
PD_MV_CHAR(m,n) *変数名; |
1≦n≦30000 |
|
VARCHAR[(n)] ARRAY m,及びMVARCHAR[(n)] ARRAY m |
PD_MV_VCHAR(m,n) *変数名; |
1≦n≦32000 |
|
PD_MV_CVCHAR(m,n) *変数名; |
|||
NCHAR[(n)] ARRAY m |
PD_MV_NCHAR(m,n) *変数名; |
1≦n≦15000 |
|
NVARCHAR[(n)] ARRAY m |
PD_MV_NVCHAR(m,n) *変数名; |
1≦n≦16000 |
|
DATE ARRAY m |
PD_MV_CHAR(m,10) *変数名; |
− |
|
TIME ARRAY m |
PD_MV_CHAR(m,8) *変数名; |
− |
|
TIMESTAMP ARRAY m |
PD_MV_CHAR(m,n) *変数名; |
p=0の場合はn=19 p=2の場合はn=21,22 p=4の場合はn=23,24 p=6の場合はn=25,26 |
|
INTERVAL YEAR TO DAY ARRAY m |
PD_MV_DEC(m,8,0) *変数名; |
− |
|
INTERVAL HOUR TO SECOND ARRAY m |
PD_MV_DEC(m,6,0) *変数名; |
− |
|
繰返し列用標識変数 |
PD_MV_SINT(m) *変数名; |
− |
- (凡例)
-
m:繰返し列の各要素を示す番号(0〜m-1)
n:長さ(バイト)
p:精度(全体のけた数)
s:位取り(小数点以下のけた数)
−:なし
- 注
-
64ビットモードの場合,longの代わりにintを使用してください。
- 注※
-
プリプロセス時に領域の定義長が決定できないため,実行時にポインタが指す領域に格納されている文字列の長さを,strlen(変数名)で求めて,領域長の代わりに使用します。検索結果を受け取る場合は,ポインタが指す領域をNULL文字以外でクリアして,最後にNULL文字を入れてください。
(6) ポインタ型の繰返し列用のマクロ
ポインタ型の繰返し列用の変数を参照,及び設定するには,専用のマクロを使用します。ポインタ型の繰返し列用のマクロを次の表に示します。
SQLのデータ型 |
マクロ名 |
参照・設定するデータ |
データ型 |
---|---|---|---|
SMALLINT ARRAY m |
PD_MV_SINTP_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_SINTP_DATA(変数名,m) |
繰返しの各要素 |
short |
|
INTEGER ARRAY m |
PD_MV_INTP_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_INTP_DATA(変数名,m) |
繰返しの各要素 |
long※ |
|
DECIMAL[(p[,s])] ARRAY m |
PD_MV_DECP_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_DECP_DATA(変数名,m) |
繰返しの各要素の10進数の先頭アドレス |
char[ ] |
|
SMALLFLT ARRAY m (REAL) |
PD_MV_SFLTP_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_SFLTP_DATA(変数名,m) |
繰返しの各要素 |
float |
|
FLOAT ARRAY m (DOUBLE PRECISION) |
PD_MV_FLTP_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_FLTP_DATA(変数名,m) |
繰返しの各要素 |
double |
|
CHAR[(n)] ARRAY m,又はMCHAR[(n)] ARRAY m |
PD_MV_CHARP_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_CHARP_DATA(変数名,m) |
繰返しの各要素の,文字列の先頭アドレス |
char[ ] |
|
VARCHAR(n) ARRAY m,又はMVARCHAR(n) ARRAY m |
PD_MV_VCHARP_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_VCHARP_LEN(変数名,m) |
繰返しの各要素の,文字列の実長 |
short |
|
PD_MV_VCHARP_STR(変数名,m) |
繰返しの各要素の,文字列のアドレス |
char[ ] |
|
PD_MV_CVCHARP_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
|
PD_MV_CVCHARP_DATA(変数名,m) |
繰返しの各要素の,文字列のアドレス |
char[ ] |
|
NCHAR[(n)] ARRAY m |
PD_MV_NCHARP_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_NCHARP_DATA(変数名,m) |
繰返しの各要素の,文字列の先頭アドレス |
char[ ] |
|
NVARCHAR(n) ARRAY m |
PD_MV_NVCHARP_CNT(変数名) |
繰返しデータの現在要素数 |
long※ |
PD_MV_NVCHARP_LEN(変数名,m) |
繰返しの各要素の,文字列の実長 |
short |
|
PD_MV_NVCHARP_STR(変数名,m) |
繰返しの各要素の,文字列の先頭アドレス |
char[ ] |
|
DATE ARRAY m |
CHAR(10)と同じ |
− |
− |
TIME ARRAY m |
CHAR(8)と同じ |
− |
− |
TIMESTAMP[(p)] ARRAY m |
CHAR(n)と同じ p=0の場合はn=19 p=2の場合はn=21,22 p=4の場合はn=23,24 p=6の場合はn=25,26 |
− |
− |
INTERVAL YEAR TO DAY |
DECIMAL(8,0)と同じ |
− |
− |
INTERVAL HOUR TO SECOND |
DECIMAL(6,0)と同じ |
− |
− |
標識変数 |
PD_MV_SINTP_CNT(変数名) |
繰返し列全体の標識 |
long※ |
PD_MV_SINTP_DATA(変数名,m) |
繰返し列の各要素の標識 |
short |
- (凡例)
-
−:該当しません。
m:繰返し列の各要素を示す番号(0〜m-1)
n:長さ(バイト)
p:精度(全体のけた数)
s:位取り(小数点以下のけた数)
- 注※
-
64ビットモードの場合,intとなります。
(7) 一括指定用の構造体
一括指定用の構造体を次の表に示します。
SQLのデータ型 |
C言語のデータ記述 |
項目の記述 |
備考 |
---|---|---|---|
複数の項目 |
表F-1〜表F-3のデータ型をメンバとして含む構造体 |
複数の埋込み変数を一括指定します。 |
ポインタ宣言ができます。 |
複数の項目用の標識変数 |
表F-1〜表F-3の標識変数をメンバとして含む構造体 |
複数の標識変数を一括指定します。 |
ポインタ宣言ができます。 |