我正在使用我的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;
答案 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
的返回值。
分享并享受。