第4章 DBI・DBD::Symfowareの仕様
4.5 DBIクラス属性
while( @array = $sth‑>fetchrow̲array ) { printf "@array¥n" ;
}
# normal
printf "err : %d¥n", $sth‑>err ; printf "errstr : %s¥n", $sth‑>errstr ; printf "state : %s¥n", $sth‑>state ;
$sth = $dbh‑>prepare( "SELECT 300 / ( PRODUCT̲NUMBER ‑ 110 ) FROM STOCKS.STOCK" ) or die "$DBI::errstr¥n" ;
$sth‑>execute ;
while( @array = $sth‑>fetchrow̲array ) { printf "@array¥n" ;
}
# error
printf "err : %d¥n", $DBI::err ; printf "errstr : %s¥n", $DBI::errstr ; printf "state : %s¥n", $DBI::state ; printf "err : %d¥n", $dbh‑>err ; printf "errstr : %s¥n", $dbh‑>errstr ; printf "state : %s¥n", $dbh‑>state ; printf "err : %d¥n", $sth‑>err ; printf "errstr : %s¥n", $sth‑>errstr ; printf "state : %s¥n", $sth‑>state ;
$dbh‑>do( "DELETE FROM STOCKS.STOCK" ) or die "$DBI::errstr¥n" ;
# normal
printf "err : %d¥n", $DBI::err ; printf "errstr : %s¥n", $DBI::errstr ; printf "state : %s¥n", $DBI::state ;
$dbh‑>do( "DELETE FROM STOCKS.STOCK" ) ;
# no record
printf "err : %d¥n", $DBI::err ; printf "errstr : %s¥n", $DBI::errstr ; printf "state : %s¥n", $DBI::state ;
$dbh‑>disconnect or die "$DBI::errstr¥n" ;
4.5.2 DBI::errstr
説明
DBI::errstrは、最後に使用したハンドルで実行したデータベースアクセス のSQLMSGを参照します。
SQLMSGは、データベースアクセスのエラーメッセージの文字列です。SQLMSG の詳細は、 まえがき の Symfoware/RDBが出力するメッセージの処置を参照 する を参照してください。
DBI::errstrは参照のみ可能です。
構文
$str = $DBI::errstr ;
戻り値
SQLMSGが返却されます。
4.5 DBIクラス属性
例
4.5.1 DBI::err の 例 を参照してください。
4.5.3 DBI::state
説明
DBI::stateは、最後に使用したハンドルで実行したデータベースアクセスの SQLSTATEを参照します。
SQLSTATEはデータベースアクセスの状態を5バイトの文字列で表し、正常の 場 合 は "00000" で す 。 SQLSTATE の 詳 細 は 、 SQL リ フ ァ レ ン ス ガ イ ド の
SQLSTATE を参照してください。
DBI::stateは参照のみ可能です。
構文
$str = $DBI::state ;
戻り値
SQLSTATEが返却されます。
例
4.5.1 DBI::err の 例 を参照してください。
4.5.4 DBI::rows
説明
DBI::rowsは、最後に使用したステートメントハンドルの実行により影響を 受けた行数を参照します。
DBI::rowsは参照のみ可能です。
構文
$rc = $DBI::rows ;
戻り値
SQL文が動的SELECT文の場合、‑1が返却されます。
SQL文がINSERT文、UPDATE文:探索、UPDATE文:位置付け、DELETE文:探索、
DELETE文:位置付けの場合、更新件数が返却されます。
SQL文が動的SELECT文、INSERT文、UPDATE文:探索、DELETE文:探索以外の 場合、0E0が返却されます。
例
use DBI ;
$dbh = DBI‑>connect( "dbi:Symfoware:RDBDB", "rdbmng", "******", { PrintError =>
0 } ) or die "$DBI::errstr¥n" ;
$dbh‑>do( "DROP TABLE STOCKS.STOCK CASCADE" ) ;
$sth = $dbh‑>prepare( "CREATE TABLE STOCKS.STOCK ( PRODUCT̲NUMBER INTEGER NOT NULL, PRODUCT̲NAME CHAR(20) NOT NULL, STOCK̲QUANTITY INTEGER, WAREHOUSE̲NUMBER SMALLINT NOT NULL ) ON DBSP1" ) or die "$DBI::errstr¥n" ;
$rc = $sth‑>execute or die "$DBI::errstr¥n" ; printf "rc : $rc¥n" ;
printf "rc : %d¥n", $rc ; printf "rows : $DBI::rows¥n" ; printf "rows : %d¥n", $DBI::rows ;
$rc = $dbh‑>do( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2)" ) or die "$DBI::errstr¥n" ;
printf "rc : %d¥n", $rc ; printf "rows : $DBI::rows¥n" ; printf "rows : %d¥n", $DBI::rows ;
$sth = $dbh‑>prepare( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or die "$DBI::errstr¥n" ;
$rc = $sth‑>execute or die "$DBI::errstr¥n" ; printf "rc : %d¥n", $rc ;
printf "rows : %d¥n", $DBI::rows ; printf "rows : %d¥n", $sth‑>rows ;
$sth = $dbh‑>prepare( "SELECT * FROM STOCKS.STOCK" ) or die "$DBI::errstr¥n" ;
$rc = $sth‑>execute ; printf "rc : %d¥n", $rc ; printf "rows : %d¥n", $DBI::rows ; printf "rows : %d¥n", $sth‑>rows ; while( @array = $sth‑>fetchrow̲array ) { printf "@array¥n" ;
}
die "$DBI::errstr¥n" if $DBI::err ;
$dbh‑>disconnect or die "$DBI::errstr¥n" ;
4.5.5 DBI::neat̲maxlen
説明
DBI::neat̲maxlenは、DBI::neat、DBI::neat̲listで整形する文字列のデフ ォルトの最大長(バイト数)を設定または参照します。
DBI::neat̲maxlenは設定可能です。
DBI::neat̲maxlenのデフォルトは400です。
構文
$DBI::neat̲maxlen = $max̲len ;
$max̲len = $DBI::neat̲maxlen ;
設定値
$max̲len :
整形する文字列のデフォルトの最大長を設定してください。
戻り値
整形する文字列のデフォルトの最大長が返却されます。
例
4.4.1 DBI::neat の 例 を参照してください。