oci_error

Returns the last error found

&reftitle.description; ``array``false```oci_error` ``resource``null```connection_or_statement`&null;

Returns the last error found.

The function should be called immediately after an error occurs. Errors are cleared by a successful statement.

&reftitle.parameters;

`connection_or_statement`

- For most errors, `connection_or_statement` is the resource handle that was passed to the failing function call. For connection errors with `oci_connect`, `oci_new_connect` or `oci_pconnect` &null; should be passed.

&reftitle.returnvalues;

If no error is found, `oci_error` returns &false;. Otherwise, `oci_error` returns the error information as an associative array.

## `oci_error` Array Description

Array key | Type | &Description;
`code` | `int` | The Oracle error number.
`message` | `string` | The Oracle error text.
`offset` | `int` | The byte position of an error in the SQL statement. If there was no statement, this is `0`
`sqltext` | `string` | The SQL statement text. If there was no statement, this is an empty string.

&reftitle.changelog;

&Version; | &Description;
8.0.0, PECL OCI8 3.0.0 | `connection_or_statement` is now nullable.

&reftitle.examples;

### Displaying the Oracle error message after a connection error

    <?php
    $conn = oci_connect("hr", "welcome", "localhost/XE");
    if (!$conn) {
        $e = oci_error();   // For oci_connect errors do not pass a handle
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }
    ?>

### Displaying the Oracle error message after a parsing error

    <?php
    $stid = oci_parse($conn, "select ' from dual");  // note mismatched quote
    if (!$stid) {
        $e = oci_error($conn);  // For oci_parse errors pass the connection handle
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }
    ?>

### Displaying the Oracle error message, the problematic statement, and the position of the problem of an execution error

    <?php
    $stid = oci_parse($conn, "select does_not_exist from dual");
    $r = oci_execute($stid);
    if (!$r) {
        $e = oci_error($stid);  // For oci_execute errors pass the statement handle
        print htmlentities($e['message']);
        print "\n<pre>\n";
        print htmlentities($e['sqltext']);
        printf("\n%".($e['offset']+1)."s", "^");
        print  "\n</pre>\n";
    }
    ?>