Php “如何执行命令”;将serveroutput设置为“on”;

Php “如何执行命令”;将serveroutput设置为“on”;,php,oracle,sqlplus,Php,Oracle,Sqlplus,如何使用php在oracle(或mysql)中执行“setserveroutput on”命令?有必要通过php查看该过程的输出。不要使用SETServerOutput ON,这是一个SQLPLUS命令(不是SQL语句) SET SERVEROUTPUT ON不能在PHP或任何其他语言中作为SQL语句使用-它只是一个由SQLPLUS程序解释的命令。(其他程序也可以解释此命令,但这是为了与SQLPLUS兼容。) 改用类似的方式: (假设$db是您的PHP数据库连接句柄): $sql=; 如果($d

如何使用php在oracle(或mysql)中执行“setserveroutput on”命令?有必要通过php查看该过程的输出。不要使用SETServerOutput ON,这是一个SQLPLUS命令(不是SQL语句)

SET SERVEROUTPUT ON不能在PHP或任何其他语言中作为SQL语句使用-它只是一个由SQLPLUS程序解释的命令。(其他程序也可以解释此命令,但这是为了与SQLPLUS兼容。)

改用类似的方式: (假设
$db
是您的PHP数据库连接句柄):

$sql=;
如果($db->Execute($sql)==false){
回显“错误:发生错误”;
回显“消息:”..db->ErrorMsg()“
”; } 否则{ //成功的 }
如果您想查看sql脚本的输出,我建议您启动一个执行sqlplus的shell。
您可以将sqlplus日志导出到文本文件中,然后在读取文本文件之后。

也许您应该添加一些关于该命令的参考。例如,要将这样的命令输入到什么中?要实现sqlplus的serveroutput功能,可以使用dbms_输出包的以下过程:
禁用
启用
获取线
获取线
。但是,对于错误情况:1)不要在其他dbms_输出时使用
让错误返回到php。2) 要抛出应用程序错误,请使用
raise\u application\u error
。它不适用于我的代码:$sql=“exec insert\u lloguer”(“.$\u POST['client']”、“$\u POST['vehicle']”、“$\u POST['venedor']”、“$\u POST['datai']”、“$\u POST['kmi']”);如果($conn->Execute($sql)==false){echo“错误:发生错误;echo”消息:“..conn>ErrorMsg().”“
”;}否则{echo“将LLOGER正确添加到数据库中

”;}
没有任何错误。问题是我没有收到错误。我需要打印sqlplus执行过程insert_lloguer(…)@Giuseppe时收到的错误。你是说通过dbms_输出抛出错误,而不是引发异常?如果是这样,那真是糟糕的表现。要在serverout中复制sql*plus,您需要轮询dbms_output.get_行并处理返回的行数组(这是sqlplus在后台所做的)。这是正确的-如果您引发sql异常,它应该传播到上面列出的PHP代码。另一方面,如果您需要记录或记录一个非致命错误,您可以在ORACLE的“日志”表中记录该错误吗?
$sql = <<ADD YOUR SQL STATEMENT HERE>>;

if ($db->Execute($sql) === false) {
    echo "<B>ERROR:</B> An error occurred";
    echo "MESSAGE: " . $db->ErrorMsg()  . "<BR>";

}
else {
    //Successful
}