php - 尝试从 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。
解决方案
推荐阅读
- sql - 为什么我的代码没有将表 1 合并到表 2 的底部?
- gitlab - Gitlab CI 忽略子管道中的作业
- javascript - 从 fetch API POST 响应中获取 blob
- python - 如何解决 weasyprint 错误消息 gobject-2.0-0 错误 0x7e 消息?
- python - Python 或 Pyspark 中的 SAS 日期复制
- bash - 这些指令按什么顺序执行?
- python - 在 tkinter 中调整窗口大小时,如何使屏幕上的框架和按钮动态变化?
- python - 如何将灰度图像变成RGB?
- javascript - 图像不固定
- python - 标签文本未出现在 tkinter 框架中