static ub4
oci_handle_error(oci_connection *connection, ub4 errcode)
{
- switch (errcode) {
- case 0:
- return 0;
- break;
- case 22: /* ORA-00022 Invalid session id */
- case 1012: /* ORA-01012: */
- case 3113: /* ORA-03113: end-of-file on communication channel */
- connection->open = 0;
- connection->session->open = 0;
- connection->session->server->open = 0;
- return 0;
- break;
- default:
- return 0;
- break;
- }
+ switch (errcode) {
+ case 22: /* ORA-00022 Invalid session id */
+ case 1012: /* ORA-01012: */
+ case 3113: /* ORA-03113: end-of-file on communication channel */
+ connection->open = 0;
+ connection->session->open = 0;
+ connection->session->server->open = 0;
+ return 1; /* fatal error */
+ }
+
+ return 0; /* no fatal error */
}
/* {{{ oci_error() */
if (statement->binds) {
zend_hash_apply(statement->binds, (int (*)(void *)) _oci_bind_post_exec);
}
+
oci_handle_error(statement->conn, statement->error);
- return 0;
+
+ if (statement->error) {
+ return 0;
+ }
}
if (stmttype == OCI_STMT_SELECT && (statement->executed == 0)) {