0

有谁知道如何在 php 中捕获 oracle 异常?我有一个存储过程,当发生某些事情时会引发异常,我想将消息直接传递给浏览器。我尝试使用 try catch 和 oci_error 但仍然无法捕获异常。我想从 oracle 存储过程中捕捉到这样的东西

RAISE_APPLICATION_ERROR(-20101, '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