使用PHP执行Oracle过程-可能吗?
我尝试从PHP运行一个非常简单的Oracle过程,使用以下语句:使用PHP执行Oracle过程-可能吗?,php,sql,oracle,stored-procedures,procedure,Php,Sql,Oracle,Stored Procedures,Procedure,我尝试从PHP运行一个非常简单的Oracle过程,使用以下语句: $sql = 'exec procedureName(param1, param2)'; $sql = oci_parse($connection, $sql); oci_execute($sql); 在Oracle SQL developer中运行此命令将返回成功的“匿名块已完成”消息,但通过PHP运行此命令将返回“ORA-00900:invalid SQL statement”错误 是否仍有从PHP运行此过程的方法?非常感谢
$sql = 'exec procedureName(param1, param2)';
$sql = oci_parse($connection, $sql); oci_execute($sql);
在Oracle SQL developer中运行此命令将返回成功的“匿名块已完成”消息,但通过PHP运行此命令将返回“ORA-00900:invalid SQL statement”错误
是否仍有从PHP运行此过程的方法?非常感谢再深入一点,我认为您需要将过程调用放在PL/SQL开始-结束对中,如下所示:
$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\u bind\u by\u name
时使用适当的变量名
还要注意,SQL字符串中是否存在分号很重要
分享和享受。再深入一点,我认为您需要将过程调用放在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);
$sql = 'BEGIN procedureName(:param1, :param2); END;';
$stmt_id = oci_parse($connection, $sql);
oci_execute($stmt_id);
您需要编辑以上内容,以便在调用oci\u bind\u by\u name
时使用适当的变量名
还要注意,SQL字符串中是否存在分号很重要
分享并享受。尝试删除$sql中的“exec”。非常感谢,建议不错,但我遇到了同样的错误尝试删除$sql中的“exec”。非常感谢,建议不错,但我遇到了同样的错误
$sql = 'BEGIN procedureName(:param1, :param2); END;';
$stmt_id = oci_parse($connection, $sql);
oci_execute($stmt_id);