【问题标题】:How to get id Oracle PHP RETURNING INTO如何获取 id Oracle PHP RETURNING INTO
【发布时间】:2020-03-23 12:01:41
【问题描述】:

Oracle 12c + PHP

如何从此查询中获取 id:

$execute = "INSERT INTO DODATEK SELECT NVL(MAX(dodatekid),0)+1,'$randomString' from DODATEK";

我尝试过的 oci_bind_by_name 和 RETURNING INTO

$c = oci_connect($username, $password, $database);
if (!$c) {
    $m = oci_error();
    trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}

$executeforId = "INSERT INTO DODATEK SELECT NVL(MAX(dodatekid),0)+1,'$randomString' from DODATEK RETURNING dodatekid INTO :dodatekId";
$exForId = oci_parse($c,$executeforId);
oci_bind_by_name($stid, ':dodatekId', $dodatekIdForTxt);
echo $dodatekIdForTxt;

我得到了警告:oci_bind_by_name(): ORA-01036: 非法变量名/编号

【问题讨论】:

  • 使用$exForId 而不是$stid
  • 警告消失但返回无效

标签: php oracle oracle-call-interface


【解决方案1】:

来自文档:

您必须在使用 OUT 绑定时指定 ma​​xlength,以便 PHP 分配足够的内存来保存返回的值。

所以尝试在绑定中添加 maxlength 和 type 参数:

`oci_bind_by_name($exForId, ':dodatekId', $dodatekIdForTxt, -1, OCI_B_INT);`

【讨论】:

  • 我添加了这个,每次我得到 0 作为响应
猜你喜欢
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 2014-06-22
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 2012-09-24
相关资源
最近更新 更多