Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP执行Oracle过程-可能吗?_Php_Sql_Oracle_Stored Procedures_Procedure - Fatal编程技术网

使用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运行此过程的方法?非常感谢

我尝试从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运行此过程的方法?非常感谢

再深入一点,我认为您需要将过程调用放在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);