Dibi\Drivers\OracleDriver::createException PHP Method

createException() public static method

public static createException ( $message, $code, $sql ) : Dibi\DriverException
return Dibi\DriverException
    public static function createException($message, $code, $sql)
    {
        if (in_array($code, [1, 2299, 38911], TRUE)) {
            return new Dibi\UniqueConstraintViolationException($message, $code, $sql);
        } elseif (in_array($code, [1400], TRUE)) {
            return new Dibi\NotNullConstraintViolationException($message, $code, $sql);
        } elseif (in_array($code, [2266, 2291, 2292], TRUE)) {
            return new Dibi\ForeignKeyConstraintViolationException($message, $code, $sql);
        } else {
            return new Dibi\DriverException($message, $code, $sql);
        }
    }

Usage Example

Example #1
0
 /**
  * Executes the SQL query.
  * @param  string      SQL statement.
  * @return Dibi\ResultDriver|NULL
  * @throws Dibi\DriverException
  */
 public function query($sql)
 {
     // must detect if SQL returns result set or num of affected rows
     $cmd = strtoupper(substr(ltrim($sql), 0, 6));
     static $list = ['UPDATE' => 1, 'DELETE' => 1, 'INSERT' => 1, 'REPLAC' => 1];
     $this->affectedRows = FALSE;
     if (isset($list[$cmd])) {
         $this->affectedRows = $this->connection->exec($sql);
         if ($this->affectedRows !== FALSE) {
             return;
         }
     } else {
         $res = $this->connection->query($sql);
         if ($res) {
             return $this->createResultDriver($res);
         }
     }
     list($sqlState, $code, $message) = $this->connection->errorInfo();
     $message = "SQLSTATE[{$sqlState}]: {$message}";
     switch ($this->driverName) {
         case 'mysql':
             throw MySqliDriver::createException($message, $code, $sql);
         case 'oci':
             throw OracleDriver::createException($message, $code, $sql);
         case 'pgsql':
             throw PostgreDriver::createException($message, $sqlState, $sql);
         case 'sqlite':
             throw Sqlite3Driver::createException($message, $code, $sql);
         default:
             throw new Dibi\DriverException($message, $code, $sql);
     }
 }