inserts 3 records into emp, and uses the ROWID for updating the
records just after the insert.
*/$conn=oci_connect("scott","tiger");$stmt=oci_parse($conn,"
INSERT INTO
emp (empno, ename)
VALUES
(:empno,:ename)
RETURNING
ROWID
INTO
:rid
");$data= array(1111=>"Larry",2222=>"Bill",3333=>"Jim");$rowid=oci_new_descriptor($conn,OCI_D_ROWID);oci_bind_by_name($stmt,":empno",$empno,32);oci_bind_by_name($stmt,":ename",$ename,32);oci_bind_by_name($stmt,":rid",$rowid, -1,OCI_B_ROWID);$update=oci_parse($conn,"
UPDATE
emp
SET
sal = :sal
WHERE
ROWID = :rid
");oci_bind_by_name($update,":rid",$rowid, -1,OCI_B_ROWID);oci_bind_by_name($update,":sal",$sal,32);$sal=10000;
foreach ($dataas$empno=>$ename) {oci_execute($stmt);oci_execute($update);
}$rowid->free();oci_free_statement($update);oci_free_statement($stmt);$stmt=oci_parse($conn,"
SELECT
*
FROM
emp
WHERE
empno
IN
(1111,2222,3333)
");oci_execute($stmt);
while ($row=oci_fetch_assoc($stmt)) {var_dump($row);
}oci_free_statement($stmt);/* delete our "junk" from the emp table.... */$stmt=oci_parse($conn,"
DELETE FROM
emp
WHERE
empno
IN
(1111,2222,3333)
");oci_execute($stmt);oci_free_statement($stmt);oci_close($conn);?>