我有一个(示例)Oracle存储过程:
CREATE OR REPLACE FUNCTION EXCEPTION_TEST
RETURN NUMBER
AS
BEGIN
raise_application_error(-20500, 'This is the exception text I want to print.');
END;
我在PHP中用PDO调用它,代码如下:
$statement = $conn->prepare('SELECT exception_test() FROM dual');
$statement->execute();
函数的调用完全正常,但现在我只想打印Exception文本。
我在某处读过,你不应该使用try和catch PDO。我怎么能这样做?
答案 0 :(得分:1)
您已经读过,您不应该在报告中发现错误。
但是,如果你想以某种方式处理,那么抓住它就可以了。
基于我在handling exception in PDO上的文章中的示例,
try {
$statement = $conn->prepare('SELECT exception_test() FROM dual');
$statement->execute();
} catch (PDOException $e) {
if ($e->getCode() == 20500 ) {
echo $e->getmessage();
} else {
throw $e;
}
}
在这里,你要么得到你的特定错误,要么重新抛出异常以使其以通常的方式处理
答案 1 :(得分:0)
检查执行响应并获取错误,例如,如下所示:
if ($statement->execute() != true) {
echo $statement->errorCode();
echo $statement->errorInfo();
}
您可以在PDO manual找到更多选项。