小编Zet*_*eek的帖子

PHP/OCI - 无法从临时表中的 Oracle 过程中获取结果

我正在尝试使用 PHP OCI Oracle 函数做两件事:

  1. 在 Oracle 数据库中运行包过程。
  2. 包运行后,查询临时表以获取过程操作的结果。

我能够使用 Oracle 提供的 SQL Developer 软件成功地做到这一点。我的查询非常基本,如下所示:

BEGIN
    PKG_KTY_SEARCH.PR_PRICE_LIST();
END;
/
SELECT * FROM kty_web.KTY_PROD_PRICE_TEMP;
Run Code Online (Sandbox Code Playgroud)

上面的代码运行良好,我在 SQL Developer 中得到了完整的结果表。

我正在尝试使用 OCI 在 PHP 中做同样的事情。我的代码可以在下面看到:

<?php

// Load up the system.
require('../../system/init.php');

global $config;

$oracleDb = oci_new_connect($config['oracleDb']['username'], $config['oracleDb']['password'], $config['oracleDb']['connectionString']);

$firstStid = oci_parse($oracleDb, "BEGIN PKG_KTY_SEARCH.PR_PRICE_LIST(); END;");
oci_execute($firstStid);

$secondStid = oci_parse($oracleDb, "SELECT * FROM kty_web.KTY_PROD_PRICE_TEMP");
oci_execute($secondStid);

oci_fetch_all($secondStid, $result);

echo json_encode($result);

echo "<br />Import complete!";

?>
Run Code Online (Sandbox Code Playgroud)

然而,这不会返回错误,并且返回一个空的结果集。我不明白为什么。有人在这里看到我遗漏的任何明显的东西吗?

PHP 返回的结果集

{"PRODUCT_ID":[],"CUST_ROLE":[],"MIN_QTY":[],"MAX_QTY":[],"PRICE":[]}
Run Code Online (Sandbox Code Playgroud)

我的连接字符串如下:

$config['oracleDb']['connectionString'] = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS …
Run Code Online (Sandbox Code Playgroud)

php oracle oracle-call-interface

7
推荐指数
1
解决办法
147
查看次数

标签 统计

oracle ×1

oracle-call-interface ×1

php ×1