Source for file oracle.php
Documentation is available at oracle.php
* @package Joomla.Platform
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
* @package Joomla.Platform
* @see http://php.net/pdo
* The name of the database driver.
* The character(s) used to quote SQL statement names such as table names or field names,
* etc. The child classes should define this as necessary. If a single character string the
* same character is used for both sides of the quoted name, else the first character will be
* used for the opening quote and the second for the closing quote.
* Returns the current dateformat
* Returns the current character set
* @param array $options List of options used to configure the connection
$options['driver'] =
'oci';
$options['charset'] =
(isset
($options['charset'])) ?
$options['charset'] :
'AL32UTF8';
$options['dateformat'] =
(isset
($options['dateformat'])) ?
$options['dateformat'] :
'RRRR-MM-DD HH24:MI:SS';
$this->charset =
$options['charset'];
// Finalize initialisation
* Connects to the database if needed.
* @return void Returns void if the database connected successfully.
* @throws RuntimeException
if (isset
($this->options['schema']))
* Disconnects the database.
* Drops a table from the database.
* Note: The IF EXISTS flag is unused in the Oracle driver.
* @param string $tableName The name of the database table to drop.
* @param boolean $ifExists Optionally specify that the table must exist before it is dropped.
* @return JDatabaseDriverOracle Returns this object to support chaining.
public function dropTable($tableName, $ifExists =
true)
->setQuery('DROP TABLE :tableName');
$query->bind(':tableName', $tableName);
* Method to get the database collation in use by sampling a text field of a table in the database.
* @return mixed The collation in use by the database or boolean false if not supported.
* Get a query to run and verify the database is operational.
* @return string The query to check the health of the DB.
return 'SELECT 1 FROM dual';
* Returns the current date format
* This method should be useful in the case that
* somebody actually wants to use a different
* date format and needs to check what the current
* one is to see if it needs to be changed.
* @return string The current date format
* Shows the table CREATE statement that creates the given tables.
* Note: You must have the correct privileges before this method
* will return usable results!
* @param mixed $tables A table name or a list of table names.
* @return array A list of the create SQL for the tables.
* @throws RuntimeException
->select('dbms_metadata.get_ddl(:type, :tableName)')
->bind(':type', 'TABLE');
// Sanitize input to an array and iterate over the list.
foreach ($tables as $table)
$query->bind(':tableName', $table);
$result[$table] =
$statement;
* Retrieves field information about a given table.
* @param string $table The name of the database table.
* @param boolean $typeOnly True to only return field types.
* @return array An array of fields for the database table.
* @throws RuntimeException
$fieldCasing =
$this->getOption(PDO::ATTR_CASE);
$this->setOption(PDO::ATTR_CASE, PDO::CASE_UPPER);
$query->from('ALL_TAB_COLUMNS');
$query->where('table_name = :tableName');
$query->bind(':tableName', $prefixedTable);
foreach ($fields as $field)
$columns[$field->COLUMN_NAME] =
$field->DATA_TYPE;
foreach ($fields as $field)
$columns[$field->COLUMN_NAME] =
$field;
$columns[$field->COLUMN_NAME]->Default =
null;
$this->setOption(PDO::ATTR_CASE, $fieldCasing);
* Get the details list of keys for a table.
* @param string $table The name of the table.
* @return array An array of the column specification for the table.
* @throws RuntimeException
$fieldCasing =
$this->getOption(PDO::ATTR_CASE);
$this->setOption(PDO::ATTR_CASE, PDO::CASE_UPPER);
->from('ALL_CONSTRAINTS')
->where('table_name = :tableName')
->bind(':tableName', $table);
$this->setOption(PDO::ATTR_CASE, $fieldCasing);
* Method to get an array of all tables in the database (schema).
* @param string $databaseName The database (schema) name
* @param boolean $includeDatabaseName Whether to include the schema name in the results
* @return array An array of all the tables in the database.
* @throws RuntimeException
public function getTableList($databaseName =
null, $includeDatabaseName =
false)
if ($includeDatabaseName)
$query->select('owner, table_name');
$query->select('table_name');
$query->from('all_tables');
$query->where('owner = :database')
->bind(':database', $databaseName);
$query->order('table_name');
if ($includeDatabaseName)
* Get the version of the database connector.
* @return string The database connector version.
$this->setQuery("select value from nls_database_parameters where parameter = 'NLS_RDBMS_VERSION'");
* Select a database for use.
* @param string $database The name of the database to select for use.
* @return boolean True if the database was successfully selected.
* @throws RuntimeException
public function select($database)
* Sets the Oracle Date Format for the session
* Default date format for Oracle is = DD-MON-RR
* The default date format for this driver is:
* 'RRRR-MM-DD HH24:MI:SS' since it is the format
* that matches the MySQL one used within most Joomla
* @param string $dateFormat Oracle Date Format String
$this->setQuery("ALTER SESSION SET NLS_DATE_FORMAT = '$dateFormat'");
$this->setQuery("ALTER SESSION SET NLS_TIMESTAMP_FORMAT = '$dateFormat'");
* Set the connection to use UTF-8 character encoding.
* Returns false automatically for the Oracle driver since
* you can only set the character set when the connection
* @return boolean True on success.
* Locks a table in the database.
* @param string $table The name of the table to unlock.
* @return JDatabaseDriverOracle Returns this object to support chaining.
* @throws RuntimeException
$this->setQuery('LOCK TABLE ' .
$this->quoteName($table) .
' IN EXCLUSIVE MODE')->execute();
* Renames a table in the database.
* @param string $oldTable The name of the table to be renamed
* @param string $newTable The new name for the table.
* @param string $backup Not used by Oracle.
* @param string $prefix Not used by Oracle.
* @return JDatabaseDriverOracle Returns this object to support chaining.
* @throws RuntimeException
public function renameTable($oldTable, $newTable, $backup =
null, $prefix =
null)
$this->setQuery('RENAME ' .
$oldTable .
' TO ' .
$newTable)->execute();
* Unlocks tables in the database.
* @return JDatabaseDriverOracle Returns this object to support chaining.
* @throws RuntimeException
* Test to see if the PDO ODBC connector is available.
* @return boolean True on success, false otherwise.
* This function replaces a string identifier <var>$prefix</var> with the string held is the
* <var>tablePrefix</var> class variable.
* @param string $query The SQL statement to prepare.
* @param string $prefix The common table prefix.
* @return string The processed SQL statement.
$ip =
strpos($query, $prefix, $startPos);
$j =
strpos($query, "'", $startPos);
// Quote comes first, find end of quote
$k =
strpos($query, $quoteChar, $j);
while ($l >=
0 &&
$query{$l} ==
'\\')
// Error in the query - no end quote; ignore it
$literal .=
substr($query, $startPos, $k -
$startPos +
1);
$literal .=
substr($query, $startPos, $n -
$startPos);
* Method to commit a transaction.
* @param boolean $toSavepoint If true, commit to the last savepoint.
* @throws RuntimeException
* Method to roll back a transaction.
* @param boolean $toSavepoint If true, rollback to the last savepoint.
* @throws RuntimeException
* Method to initialize a transaction.
* @param boolean $asSavepoint If true and a transaction is already active, a savepoint will be created.
* @throws RuntimeException
Documentation generated on Tue, 19 Nov 2013 15:09:51 +0100 by phpDocumentor 1.4.3