从PHP OCI中选择Oracle中的插入记录

时间:2014-02-22 17:46:15

标签: php oracle plsql oci

我正在使用我的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;

1 个答案:

答案 0 :(得分: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;

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

分享并享受。