0

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;
    }
}
4

0 に答える 0