PHPでオラクルの例外をキャッチする方法を知っている人はいますか? 何かが発生したときに例外を発生させるストアド プロシージャがあり、メッセージを直接ブラウザに渡したいと考えています。try catch と oci_error を使用してみましたが、まだ例外をキャッチできません。Oracleストアドプロシージャからこのようなものをキャッチしたい
RAISE_APPLICATION_ERROR(-20101, 'SOME EXCEPTION');
'SOME EXCEPTION' をブラウザに送信します。
PHPコードではcodeigniterを使用していますが、提供されたドライバーを使用してプロシージャを呼び出すことができなかったため、独自の関数を作成しました。これは codeigniter によって提供されるものと非常に似ていますが、なぜ私のものが機能するのかわかりません。ストアドプロシージャを呼び出す関数は次のとおりです
public function oci_procedure_call($package_name, $proc_name, $param)
{
$sql = "begin $package_name.$proc_name(";
foreach ($param as $p) {
$sql .= $p['name'] . ',';
}
$sql = trim($sql, ',') . '); end;';
$stmt = oci_parse($this->db->conn_id, $sql);
foreach ($param as $p) {
oci_bind_by_name($stmt, $p['name'], $p['value'], $p['length'], $p['type']);
}
try {
$r = oci_execute($stmt);
} catch (Exception $e) {
log_message('info', print_r($e, true));
}
if (!$r) {
$e = oci_error($this->db->conn_id);
return $e['message'];
} else {
return true;
}
}