• 検索結果がありません。

第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" ;