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

DBIクラス属性

第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 の 例 を参照してください。