Thanks everybody. To: Christopher Jones thanks for your code. I have run your code. For the sample you supplied, the oci_commit really returns false. But if I add a primary key constraint to t_tab.x, and then run the script, the oci_commit returns true!strange... So do I need check all the oci_execute's return value? awful... ******** the code pk added ******** <?php ini_set('display_errors', 'Off'); $c = oci_connect('scott', 'tiger'); if (!$c) { $m = oci_error(); print ('Could not connect to database: '. $m['message']); } $stmtarray = array( "drop table t_tab", "create table t_tab ( x int constraint check_x check ( x > 0 ) deferrable initially immediate primary key, y int constraint check_y check ( y > 0 ) deferrable initially deferred)" ); foreach ($stmtarray as $stmt) { $s = oci_parse($c, $stmt); $r = oci_execute($s); if (!$r) { $m = oci_error($c); if (!in_array($m['code'], array( // ignore expected errors 942 // table or view does not exist , 2289 // sequence does not exist , 4080 // trigger does not exist , 38802 // edition does not exist ))) { echo $stmt . PHP_EOL . $m['message'] . PHP_EOL; } } } echo "First Insert\n"; $s = oci_parse($c, "insert into t_tab values ( 1,1 )"); $r = oci_execute($s, OCI_DEFAULT); if (!$r) { $m = oci_error($c); print('Could not execute: '. $m['message']); } $r = oci_commit($c); if (!$r) { $m = oci_error($c); print('Could not commit: '. $m['message']); } echo "Second Insert\n"; $s = oci_parse($c, "insert into t_tab values ( 1,-1)"); $r = oci_execute($s, OCI_DEFAULT); // Explore the difference with and without OCI_DEFAULT if (!$r) { $m = oci_error($c); print('Could not execute: '. $m['message']); } $r = oci_commit($c); if (!$r) { $m = oci_error($c); print('Could not commit: '. $m['message']); } $s = oci_parse($c, "drop table t_tab"); oci_execute($s); ?> 2010/3/17 Christopher Jones <christopher.jones@xxxxxxxxxx>: > >> echo "Second Insert\n"; >> $s = oci_parse($c, "insert into t_tab values ( 1,-1)"); >> $r = oci_execute($s, OCI_DEFAULT); // Explore the difference with and >> without OCI_DEFAULT >> if (!$r) { >> $m = oci_error($s); >> trigger_error('Could not execute: '. $m['message'], E_USER_ERROR); >> } >> $r = oci_commit($c); >> if (!$r) { >> $m = oci_error($s); > > Correction: the two oci_error() calls after oci_commit() should use > the $c connection resource, not $s, e.g.: > > $m = oci_error($c); > >> trigger_error('Could not commit: '. $m['message'], E_USER_ERROR); >> } >> >> $s = oci_parse($c, "drop table t_tab"); >> oci_execute($s); >> >> ?> >> > > -- > Email: christopher.jones@xxxxxxxxxx > Tel: +1 650 506 8630 > Blog: http://blogs.oracle.com/opal/ > Free PHP Book: http://tinyurl.com/ugpomhome > -- ############################ ZeYuan Zhang Mail: 51ajax.net@xxxxxxxxx Blog: http://51ajax.net/ ############################ -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php