第4章 DBI・DBD::Symfowareの仕様
4.8 データベースハンドルメソッド
4.8.21 type̲info̲all
説明
type̲info̲allは、サポートしているデータ型の情報の配列への参照を返却 します。
構文
$type̲info̲all = $dbh‑>type̲info̲all ;
戻り値
データ型の情報の配列への参照が返却されます。
配列の1要素目は、列の情報の保持順を示す連想配列への参照となります。
列の情報の保持順を示す連想配列の名前と値を以下に示します。
連想配列の名前 値 TYPE̲NAME 0 DATA̲TYPE 1 COLUMN̲SIZE 2 LITERAL̲PREFIX 3 LITERAL̲SUFFIX 4 CREATE̲PARAMS 5 NULLABLE 6 CASE̲SENSITIVE 7 SEARCHABLE 8 UNSIGNED̲ATTRIBUTE 9 FIXED̲PREC̲SCALE 10 AUTO̲UNIQUE̲VALUE 11
4.8 データベースハンドルメソッド
連想配列の名前 値 LOCAL̲TYPE̲NAME 12 MINIMUM̲SCALE 13 MAXIMUM̲SCALE 14 SQL̲DATA̲TYPE 15 SQL̲DATETIME̲SUB 16 NUM̲PREC̲RADIX 17 INTERVAL̲PRECISION 18
配列の2要素目以降は、列の情報を保持している配列への参照の配列への参 照となります。列の情報を保持している配列の要素番号と値を以下に示します。
配列の要素番号 値
0 データ型を表す文字列が設定されます。
1 SQLデータ型番号が設定されます。
2 真数の場合、10進数での桁数が設定されます。
概数の場合、ビット数が設定されます。
文字列型、各国語文字列型の場合、最大文字数が設定さ れます。
日時型の場合、最大文字数が設定されます。
時間隔型の場合、最大文字数が設定されます。
BLOB型の場合、最大バイト数が設定されます。
3 定数値の先頭に付ける文字列が設定されます。
定数値の先頭に付ける文字列がない場合、undefが設定さ れます。
4 定数値の後方に付ける文字列が設定されます。
定数値の後方に付ける文字列がない場合、undefが設定さ れます。
5 デ ー タ 型 に 精 度 、 位 取 り が 指 定 で き る 場 合 、
"PRECISION,SCALE"が設定されます。
データ型に長さが指定できる場合、"LENGTH"が設定され ます。
データ型に精度、位取り、長さが指定できない場合、undef が設定されます。
6 常にNULLの値を持つ可能性があるため、1が設定されま す。
7 文字列型の場合、比較において大文字と小文字を区別す
るため、trueが設定されます。
文字列型以外の場合、falseが設定されます。
8 探索条件に指定できない場合、0が設定されます。
LIKE述語を除く探索条件に指定できる場合、2が設定され ます。
探索条件に指定できる場合、3が設定されます。
9 真数、概数の場合、常に符号ありのため、falseが設定さ れます。
真数、概数でない場合、undefが設定されます。
10 常に精度と位取りが同じではないため、falseが設定され ます。
11 真数、概数以外の場合、新しい行を挿入するとき自動的
にユニークな値とはならないため、falseが設定されま
配列の要素番号 値 す。
真数、概数以外の場合、undefが設定されます。
12 Symfoware/RDBで規定されたデータ型を表す文字列が設 定されます。
13 位取りの最小値が設定されます。
14 位取りの最大値が設定されます。
15 日時型の場合、9が設定されます。
時間隔型の場合、10が設定されます。
日時型、時間隔型以外の場合、SQLデータ型番号が設定さ れます。
16 DATE型の場合、1が設定されます。
TIME型の場合、2が設定されます。
TIMESTAMP型の場合、3が設定されます。
日時型、時間隔型以外の場合、undefが設定されます。
17 真数の場合、10が設定されます。
概数の場合、2が設定されます。
真数、概数以外の場合、undefが設定されます。
18 時間隔型の場合、時間隔先行フィールド精度の最大文字
数が設定されます。
時間隔型以外の場合、undefが設定されます。
例
use DBI ;
$dbh = DBI‑>connect( "dbi:Symfoware:RDBDB", "rdbmng", "******", { PrintError =>
0 } ) or die "$DBI::errstr¥n" ;
$type̲info̲all = $dbh‑>type̲info̲all ;
$hash̲types = $type̲info̲all‑>[ 0 ] ;
@keys̲types = keys( %$hash̲types ) ; for( $i = 0 ; $i < @keys̲types ; $i ++ ) {
$keys[ $hash̲types‑>{ $keys̲types[ $i ] } ] = $keys̲types[ $i ] ; }
$c = 0 ;
for( $i = 1 ; $i < @$type̲info̲all ; $i ++ ) { @type̲info = $type̲info̲all‑>[ $i ] ; foreach $types ( @type̲info ) { $c ++ ;
printf "(%d)¥n", $c ;
printf "%‑18s : %s¥n", $keys[ 0], $types‑>[ 0] ; printf "%‑18s : %d¥n", $keys[ 1], $types‑>[ 1] ; printf "%‑18s : %s¥n", $keys[ 2], $types‑>[ 2] ; printf "%‑18s : %s¥n", $keys[ 3], $types‑>[ 3] ; printf "%‑18s : %s¥n", $keys[ 4], $types‑>[ 4] ; printf "%‑18s : %s¥n", $keys[ 5], $types‑>[ 5] ; printf "%‑18s : %d¥n", $keys[ 6], $types‑>[ 6] ;
printf "%‑18s : %s¥n", $keys[ 7], $types‑>[ 7] ? "true" : "false" ; printf "%‑18s : %s¥n", $keys[ 8], $types‑>[ 8] ;
printf "%‑18s : %s¥n", $keys[ 9], ! defined $types‑>[ 9] ? "undef" :
$types‑>[ 9] ? "true" : "false" ;
printf "%‑18s : %s¥n", $keys[10], ! defined $types‑>[10] ? "undef" :
$types‑>[10] ? "true" : "false" ;
4.8 データベースハンドルメソッド
printf "%‑18s : %s¥n", $keys[11], ! defined $types‑>[11] ? "undef" :
$types‑>[11] ? "true" : "false" ;
printf "%‑18s : %s¥n", $keys[12], $types‑>[12] ; printf "%‑18s : %d¥n", $keys[13], $types‑>[13] ; printf "%‑18s : %d¥n", $keys[14], $types‑>[14] ; printf "%‑18s : %d¥n", $keys[15], $types‑>[15] ;
printf "%‑18s : " . ( ! defined $types‑>[16] ? "%s¥n" : "%d¥n" ),
$keys[16], ! defined $types‑>[16] ? "undef" : $types‑>[16] ;
printf "%‑18s : " . ( ! defined $types‑>[17] ? "%s¥n" : "%d¥n" ),
$keys[17], ! defined $types‑>[17] ? "undef" : $types‑>[17] ;
printf "%‑18s : " . ( ! defined $types‑>[18] ? "%s¥n" : "%d¥n" ),
$keys[18], ! defined $types‑>[18] ? "undef" : $types‑>[18] ; }
}
$dbh‑>disconnect or die "$DBI::errstr¥n" ;