Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.

Oracle specific SQL code generator.

Copyright: 1999 onwards Martin Dougiamas http://dougiamas.com
License: http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
File Size: 756 lines (35 kb)
Included or required:0 times
Referenced: 0 times
Includes or requires: 0 files

Defines 1 class


Class: oracle_sql_generator  - X-Ref

This class generate SQL code to be used against Oracle
It extends XMLDBgenerator so everything can be
overridden as needed to generate correct SQL.

getResetSequenceSQL($table)   X-Ref
Reset a sequence to the id field of a table.

param: xmldb_table|string $table name of table or the table object.
return: array of sql statements

getTableName(xmldb_table $xmldb_table, $quoted=true)   X-Ref
Given one xmldb_table, returns it's correct name, depending of all the parametrization
Overridden to allow change of names in temp tables

param: xmldb_table table whose name we want
param: boolean to specify if the name must be quoted (if reserved word, only!)
return: string the correct name of the table

getCreateIndexSQL($xmldb_table, $xmldb_index)   X-Ref
No description

getCreateTempTableSQL($xmldb_table)   X-Ref
Given one correct xmldb_table, returns the SQL statements
to create temporary table (inside one array).

param: xmldb_table $xmldb_table The xmldb_table object instance.
return: array of sql statements

getDropTableSQL($xmldb_table)   X-Ref
Given one correct xmldb_table, returns the SQL statements
to drop it (inside one array).

param: xmldb_table $xmldb_table The table to drop.
return: array SQL statement(s) for dropping the specified table.

getTypeSQL($xmldb_type, $xmldb_length=null, $xmldb_decimals=null)   X-Ref
Given one XMLDB Type, length and decimals, returns the DB proper SQL type.

param: int $xmldb_type The xmldb_type defined constant. XMLDB_TYPE_INTEGER and other XMLDB_TYPE_* constants.
param: int $xmldb_length The length of that data type.
param: int $xmldb_decimals The decimal places of precision of the data type.
return: string The DB defined data type.

getCreateSequenceSQL($xmldb_table, $xmldb_field)   X-Ref
Returns the code (array of statements) needed
to create one sequence for the xmldb_table and xmldb_field passed in.

param: xmldb_table $xmldb_table The xmldb_table object instance.
param: xmldb_field $xmldb_field The xmldb_field object instance.
return: array Array of SQL statements to create the sequence.

getCreateTriggerSQL($xmldb_table, $xmldb_field, $sequence_name)   X-Ref
Returns the code needed to create one trigger for the xmldb_table and xmldb_field passed

param: xmldb_table $xmldb_table The xmldb_table object instance.
param: xmldb_field $xmldb_field The xmldb_field object instance.
param: string $sequence_name
return: array Array of SQL statements to create the sequence.

getDropSequenceSQL($xmldb_table, $xmldb_field, $include_trigger=false)   X-Ref
Returns the code needed to drop one sequence for the xmldb_table and xmldb_field passed
Can, optionally, specify if the underlying trigger will be also dropped

param: xmldb_table $xmldb_table The xmldb_table object instance.
param: xmldb_field $xmldb_field The xmldb_field object instance.
param: bool $include_trigger
return: array Array of SQL statements to create the sequence.

getCommentSQL($xmldb_table)   X-Ref
Returns the code (array of statements) needed to add one comment to the table.

param: xmldb_table $xmldb_table The xmldb_table object instance.
return: array Array of SQL statements to add one comment to the table.

getDropTableExtraSQL($xmldb_table)   X-Ref
Returns the code (array of statements) needed to execute extra statements on table drop

param: xmldb_table $xmldb_table The xmldb_table object instance.
return: array Array of extra SQL statements to drop a table.

getRenameTableExtraSQL($xmldb_table, $newname)   X-Ref
Returns the code (array of statements) needed to execute extra statements on table rename.

param: xmldb_table $xmldb_table The xmldb_table object instance.
param: string $newname The new name for the table.
return: array Array of extra SQL statements to rename a table.

getAlterFieldSQL($xmldb_table, $xmldb_field, $skip_type_clause = NULL, $skip_default_clause = NULL, $skip_notnull_clause = NULL)   X-Ref
Given one xmldb_table and one xmldb_field, return the SQL statements needed to alter the field in the table.

Oracle has some severe limits:
- clob and blob fields doesn't allow type to be specified
- error is dropped if the null/not null clause is specified and hasn't changed
- changes in precision/decimals of numeric fields drop an ORA-1440 error

param: xmldb_table $xmldb_table The table related to $xmldb_field.
param: xmldb_field $xmldb_field The instance of xmldb_field to create the SQL from.
param: string $skip_type_clause The type clause on alter columns, NULL by default.
param: string $skip_default_clause The default clause on alter columns, NULL by default.
param: string $skip_notnull_clause The null/notnull clause on alter columns, NULL by default.
return: string The field altering SQL statement.

getCreateDefaultSQL($xmldb_table, $xmldb_field)   X-Ref
Given one xmldb_table and one xmldb_field, return the SQL statements needed to add its default
(usually invoked from getModifyDefaultSQL()

param: xmldb_table $xmldb_table The xmldb_table object instance.
param: xmldb_field $xmldb_field The xmldb_field object instance.
return: array Array of SQL statements to create a field's default.

getDropDefaultSQL($xmldb_table, $xmldb_field)   X-Ref
Given one xmldb_table and one xmldb_field, return the SQL statements needed to drop its default
(usually invoked from getModifyDefaultSQL()

Note that this method may be dropped in future.

param: xmldb_table $xmldb_table The xmldb_table object instance.
param: xmldb_field $xmldb_field The xmldb_field object instance.
return: array Array of SQL statements to create a field's default.

getSequenceFromDB($xmldb_table)   X-Ref
Given one xmldb_table returns one string with the sequence of the table
in the table (fetched from DB)
The sequence name for oracle is calculated by looking the corresponding
trigger and retrieving the sequence name from it (because sequences are
independent elements)

param: xmldb_table $xmldb_table The xmldb_table object instance.
return: string|bool If no sequence is found, returns false

getTriggerFromDB($xmldb_table)   X-Ref
Given one xmldb_table returns one string with the trigger
in the table (fetched from DB)

param: xmldb_table $xmldb_table The xmldb_table object instance.
return: string|bool If no trigger is found, returns false

isNameInUse($object_name, $type, $table_name)   X-Ref
Given one object name and it's type (pk, uk, fk, ck, ix, uix, seq, trg).

(MySQL requires the whole xmldb_table object to be specified, so we add it always)

This is invoked from getNameForObject().
Only some DB have this implemented.

param: string $object_name The object's name to check for.
param: string $type The object's type (pk, uk, fk, ck, ix, uix, seq, trg).
param: string $table_name The table's name to check in
return: bool If such name is currently in use (true) or no (false)

addslashes($s)   X-Ref
Adds slashes to string.

param: string $s
return: string The escaped string.

getReservedWords()   X-Ref
Returns an array of reserved words (lowercase) for this DB

return: array An array of database specific reserved words