首页 > 解决方案 > 尝试从 PHP 代码在 Oracle 中执行存储过程

问题描述

我已经在网上搜索过,答案总是相同的,略有不同,但我没有得到任何结果。

在 Oracle(11.2.0.40 版)中,我编写了一个存储过程进行测试,根据传递的参数,它只删除表中的记录。在 PHP 中,通过 PDO,我创建了一个连接并调用存储过程,将参数传递给它以删除记录。

但是,没有答案,甚至 CATCH 中的错误也没有。

作为测试,我在Oracle中重命名了存储过程并运行了PHP,然后它指责程序不存在的错误,这甚至是可以预料的。

下面是过程,下面是 PHP 代码:

CREATE OR REPLACE PROCEDURE 
 p_PesquisaRateio (siglaUsuario IN VARCHAR2)
  AS
BEGIN
DELETE FROM RCR.CST_1410_RATEIO_CRGOMSIM WHERE USUARIO = siglaUsuario;
commit;
END;

-----准备和执行过程的类方法

public function passarParametro($sentencaCriacao,$siglaUsuario) {
  try {
    $sql_stmt = $this->dbh->prepare($sentencaCriacao);
    $sql_stmt->bindParam(':siglaUsuario',$siglaUsuario);
    $sql_stmt->execute();
  }
  catch (PDOException $erro){
    echo "Não foi possivel excluir os dados do banco: ".$erro->getMessage();
  }
}

-----准备和调用程序

require("PDOConnection.php");
$dbh = new PDOConnection();
 $sentencaCriacao ="Call p_PesquisaRateio(:siglaUsuario)";
$dbh->passarParametro($sentencaCriacao,"'".$siglaUsuario."'");

----在PLSQL Developer中测试

begin
p_PesquisaRateio('MSIM' );
end;

上面的执行没问题,表上的数据确实被删除了,但不是通过 PHP。

标签: phporacleoracle11g

解决方案


推荐阅读