简体   繁体   中英

Selecting inserted record in Oracle from PHP OCI

I am executing a PLSQL Block using OCI from my PHP site which is running some procedures inside. The final procedure is returning the inserted records rowid of a specific table.

BEGIN

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

END;

What I want to do is, I want to get the primary key values of the record for this rowid?

Is there a way to run it somehow like below and get the select results out to PHP with oci_fetch_row or something?

BEGIN

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

 SELECT column1, column2
 FROM my_table
 WHERE rowid = rowid_;

END;

There's a better way. Try something like:

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;

This example assumes that the primary key column named PK_COL is populated in some way during the execution of the INSERT statement, eg by a trigger. The RETURNING clause of the INSERT statement specifies that the value of PK_COL from the inserted row should be put into the variable specified, in this case nPK_col . You can specify multiple columns and variables in the RETURNING clause - documentation here . You may need to put this into whatever procedure performs the actual INSERT and then add an OUT parameter to allow the value to be passed back to the caller - or use a FUNCTION instead of a PROCEDURE and have the primary key value be the return value of the FUNCTION .

Share and enjoy.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM