【问题标题】:Selecting inserted record in Oracle from PHP OCI从 PHP OCI 中选择 Oracle 中插入的记录
【发布时间】:2014-02-22 17:46:15
【问题描述】:

我正在使用我的 PHP 站点中的 OCI 执行一个 PLSQL 块,该站点正在运行一些程序。最后一个过程是返回特定表的插入记录 rowid。

BEGIN

  proc1(1);
  proc2(2, rowid_);

END;

我想做的是,我想获取这个rowid的记录的主键值?

有没有办法像下面这样以某种方式运行它并使用 oci_fetch_row 或其他东西将选择结果输出到 PHP?

BEGIN

  proc1();
  proc2(rowid_); -- out variable

 SELECT column1, column2
 FROM my_table
 WHERE rowid = rowid_;

END;

【问题讨论】:

    标签: php oracle plsql oracle-call-interface


    【解决方案1】:

    有更好的方法。尝试类似:

    DECLARE
      nPK_col  NUMBER;
      nCol1    NUMBER := 1;
      nCol2    NUMBER := 2;
    BEGIN
      INSERT INTO SOME_TABLE(COL1, COL2)
        VALUES (nCol1, nCol2)
        RETURNING PK_COL INTO nPK_col;
    END;
    

    此示例假定在执行 INSERT 语句期间以某种方式填充名为 PK_COL 的主键列,例如通过触发器。 INSERT 语句的RETURNING 子句指定应将插入行中的PK_COL 的值放入指定的变量中,在本例中为nPK_col。您可以在 RETURNING 子句 - documentation here 中指定多个列和变量。您可能需要将其放入执行实际 INSERT 的任何过程中,然后添加 OUT 参数以允许将值传递回调用者 - 或使用 FUNCTION 而不是 PROCEDURE 并拥有主键值是FUNCTION的返回值。

    分享和享受。

    【讨论】:

      猜你喜欢
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多