説明
arrayfalse oci_error(resourcenull $connection_or_statement
= null
)
この関数は、エラーが発生した直後にコールしなければなりません。
文の実行が成功すると、エラーはクリアされてしまいます。
パラメータ
-
connection_or_statement
-
大半のエラーでは、connection_or_statement
は関数コール時に渡されたリソースハンドルとなります。
oci_connect や
oci_new_connect、
oci_pconnect の接続エラーの場合は null
を渡します。
戻り値
もしエラーが見つからない場合、oci_error は
false
を返します。それ以外の場合は、
oci_error はエラーの情報を連想配列で返します。
oci_error の配列の形式
配列のキー |
型 |
説明 |
code |
int |
Oracle のエラーコード。
|
message |
string |
Oracle のエラーメッセージ。
|
offset |
int |
SQL 文の中でのエラーが発生した場所のバイト位置。SQL 文がない場合は
0 となります。
|
sqltext |
string |
SQL 文のテキスト。SQL 文がない場合は空文字列となります。
|
例
例1 接続エラー後の Oracle エラーメッセージの表示
<?php
$conn = oci_connect("hr", "welcome", "localhost/XE");
if (!$conn) {
$e = oci_error(); // oci_connect のエラーの場合、ハンドルを渡しません
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
?>
例2 パースエラー時の Oracle エラーメッセージの表示
<?php
$stid = oci_parse($conn, "select ' from dual"); // クォートが間違っていることに注意
if (!$stid) {
$e = oci_error($conn); // oci_parse エラーの場合は接続ハンドルを渡します
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
?>
例3 実行エラー時の、
Oracle エラーメッセージと問題となった文の表示
<?php
$stid = oci_parse($conn, "select does_not_exist from dual");
$r = oci_execute($stid);
if (!$r) {
$e = oci_error($stid); // oci_execute のエラーの場合、ステートメントハンドルを渡します
print htmlentities($e['message']);
print "\n<pre>\n";
print htmlentities($e['sqltext']);
printf("\n%".($e['offset']+1)."s", "^");
print "\n</pre>\n";
}
?>