我正在尝试使用以下语句从 PHP 运行一个非常简单的 Oracle 过程:
$sql = 'exec procedureName(param1, param2)';
$sql = oci_parse($connection, $sql); oci_execute($sql);
在 Oracle SQL 开发人员中运行此命令会返回成功的“匿名块已完成”消息,但通过 PHP 运行此命令会返回“ORA-00900:无效 SQL 语句”错误。
有没有办法从 PHP 运行这个程序?非常感谢
我正在尝试使用以下语句从 PHP 运行一个非常简单的 Oracle 过程:
$sql = 'exec procedureName(param1, param2)';
$sql = oci_parse($connection, $sql); oci_execute($sql);
在 Oracle SQL 开发人员中运行此命令会返回成功的“匿名块已完成”消息,但通过 PHP 运行此命令会返回“ORA-00900:无效 SQL 语句”错误。
有没有办法从 PHP 运行这个程序?非常感谢
再深入一点,我认为您需要将过程调用放在 PL/SQL BEGIN-END 对中,如下所示:
$sql = 'BEGIN procedureName(:param1, :param2); END;';
$stmt_id = oci_parse($connection, $sql);
oci_bind_by_name($stmt_id, ':param1', $value1);
oci_bind_by_name($stmt_id, ':param2', $value2);
oci_execute($stmt_id);
您需要编辑以上内容以在调用oci_bind_by_name
.
另请注意,SQL 字符串中分号的存在很重要。
分享和享受。
$sql = 'BEGIN procedureName(:param1, :param2); END;';
$stmt_id = oci_parse($connection, $sql);
oci_execute($stmt_id);