我正在尝试使用以下语句从PHP运行一个非常简单的Oracle过程:
$sql = 'exec procedureName(param1, param2)';
$sql = oci_parse($connection, $sql); oci_execute($sql);
在Oracle SQL开发人员中运行此命令会返回成功的'匿名块已完成'消息,但通过PHP运行此消息将返回'ORA-00900:无效的SQL语句'错误
无论如何从PHP运行此过程?非常感谢
答案 0 :(得分:5)
更深入一点,我认为您需要将过程调用放在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字符串中存在分号非常重要。
分享并享受。
答案 1 :(得分:0)
$sql = 'BEGIN procedureName(:param1, :param2); END;';
$stmt_id = oci_parse($connection, $sql);
oci_execute($stmt_id);