2014-02-22 39 views
0

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

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

还有更好的办法。尝试是这样的:

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声明,如执行过程中以某种方式填充通过触发器。 INSERT语句的RETURNING子句指定插入行中的PK_COL的值应放入指定的变量中,在本例中为nPK_col。您可以在RETURNING子句中指定多个列和变量 - documentation here。您可能需要将其置于执行实际INSERT的任何过程中,然后添加OUT参数以允许将该值传回给调用方 - 或使用FUNCTION而不是,并将主键值设置为返回值FUNCTION

分享和享受。