Re: Problem with Oracle

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




roy.a.jones@xxxxxxx wrote:
In Oracle you would write: insert into pts (pid, txt) values (1,'502a');

But in PHP you are going to do the following:

$conn = oci_connect('scott','tiger','my_db');
$sql = "insert into pts (pid, txt) values (1,'502a')";
$cursor = oci_parse($conn, $sql);
if (! $cursor)
{ $err = oci_error($conn);
  print htmlentities($e['message']);
   exit;
}
$results = oci_execute($cursor);
oci_commit($conn);
oci_close($conn);


The statements:

  $results = oci_execute($cursor);
  oci_commit($conn);

do two commits.  Oci_execute() commits by default.  The message
to the database to perform the commit is "piggybacked" in the
execute call.  However the subsequent (unecessary in this case)
oci_commit() call requires an explicit round trip to the DB.

If you were doing multiple inserts you might do something like:

  $s = oci_parse($c, 'insert into ptab (pdata) values (:bv)');
  oci_bind_by_name($s, ':bv', $v, 20, SQLT_CHR);
  foreach ($a as $v) {
    $r = oci_execute($s, OCI_DEFAULT);
  }
  oci_commit($c);

Or explore calling a PL/SQL block and do a bulk FORALL insert.
I'll blog about bulk FORALL in a few days.

Chris

--
Christopher Jones, Oracle
Email: Christopher.Jones@xxxxxxxxxx    Tel: +1 650 506 8630
Blog:  http://blogs.oracle.com/opal/

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux