2014-02-22 53 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

分享和享受。