ILIAS  release_4-4 Revision
ilDBOracle Class Reference

Oracle Database Wrapper. More...

+ Inheritance diagram for ilDBOracle:
+ Collaboration diagram for ilDBOracle:

Public Member Functions

 getDSN ()
 Get DSN. More...
 
 getDBType ()
 Get DB Type. More...
 
 getDBVersion ()
 
 doConnect ()
 Standard way to connect to db. More...
 
 initConnection ()
 Initialize the database connection. More...
 
 now ()
 now() More...
 
 fromUnixtime ($a_expr, $a_to_text=true)
 fromUnixtime (makes timestamp out of unix timestamp) More...
 
 unixTimestamp ()
 Unix timestamp. More...
 
 constraintName ($a_table, $a_constraint)
 Constraint names must be "globally" unique in oracle. More...
 
 getPrimaryKeyIdentifier ()
 Primary key identifier. More...
 
 supportsFulltext ()
 Is fulltext index supported? More...
 
 replace ($a_table, $a_pk_columns, $a_other_columns)
 Replace into method. More...
 
 locate ($a_needle, $a_string, $a_start_pos=1)
 Create locate string. More...
 
 like ($a_col, $a_type, $a_value="?", $case_insensitive=true)
 Provisional LIKE support for oracle CLOB's Uses SUBSTR to reduce the length. More...
 
 concat ($a_values, $a_allow_null=true)
 CONCAT for oracle allows only the concatenation of two values. More...
 
 in ($a_field, $a_values, $negate=false, $a_type="")
 Overwritten implementation of $ilDB->in to avoid ORA-01795 (maximum number of expressions in a list is 1000) More...
 
 lockTables ($a_tables)
 Lock table. More...
 
 unlockTables ()
 Unlock tables. More...
 
 dropPrimaryKey ($a_table)
 Drop a primary key from a table. More...
 
- Public Member Functions inherited from ilDB
 ilDB ()
 constructor More...
 
 setDBUser ($a_user)
 Set database user. More...
 
 getDBUser ()
 Get database user. More...
 
 setDBPort ($a_port)
 Set database port. More...
 
 getDBPort ()
 Get database port. More...
 
 setDBHost ($a_host)
 Set database host. More...
 
 getDBHost ()
 Get database host. More...
 
 setDBPassword ($a_password)
 Set database password. More...
 
 getDBPassword ()
 Get database password. More...
 
 setDBName ($a_name)
 Set database name. More...
 
 getDBName ()
 Get database name. More...
 
 getDSN ()
 Get DSN. More...
 
 getDBVersion ()
 Get DB version. More...
 
 getDBType ()
 Get DSN. More...
 
 enableResultBuffering ($a_status)
 En/disable result buffering. More...
 
 initFromIniFile ($tmpClientIniFile=null)
 Init db parameters from ini file. More...
 
 connect ($a_return_false_for_error=false)
 Open the connection. More...
 
 doConnect ()
 Standard way to connect to db. More...
 
 disconnect ()
 Disconnect. More...
 
 getHostDSN ()
 Should return a valid value, if host connections are possible (connectHost) to create a new database from scratch. More...
 
 connectHost ()
 Sets up a host connection only (no specific database used). More...
 
 supportsFulltext ()
 
 supportsSlave ()
 Supports slave. More...
 
 useSlave ($a_val=true)
 Use slave. More...
 
 handleError ($a_res, $a_info="", $a_level="")
 Handle MDB2 Errors. More...
 
 raisePearError ($a_message, $a_level="")
 Raise an error. More...
 
 createDatabase ($a_name, $a_charset="utf8", $a_collation="")
 Create database. More...
 
 createTable ($a_name, $a_definition_array, $a_drop_table=false, $a_ignore_erros=false)
 Create a new table in the database. More...
 
 dropTable ($a_name, $a_error_if_not_existing=true)
 Drop a table. More...
 
 alterTable ($a_name, $a_changes)
 Alter a table in the database This method is DEPRECATED, see http://www.ilias.de/docu/goto.php?target=pg_25354_42&client_id=docu PLEASE USE THE SPECIALIZED METHODS OF THIS CLASS TO CHANGE THE DB SCHEMA. More...
 
 addTableColumn ($a_table, $a_column, $a_attributes)
 Add table column Use this only on aleady "abstracted" tables. More...
 
 dropTableColumn ($a_table, $a_column)
 Drop table column Use this only on aleady "abstracted" tables. More...
 
 modifyTableColumn ($a_table, $a_column, $a_attributes)
 Modify a table column Use this only on aleady "abstracted" tables. More...
 
 renameTableColumn ($a_table, $a_column, $a_new_column)
 Rename a table column Use this only on aleady "abstracted" tables. More...
 
 renameTable ($a_name, $a_new_name)
 Rename a table. More...
 
 addPrimaryKey ($a_table, $a_fields)
 Add a primary key to a table. More...
 
 getPrimaryKeyIdentifier ()
 Primary key identifier. More...
 
 dropPrimaryKey ($a_table)
 Drop a primary key from a table. More...
 
 addIndex ($a_table, $a_fields, $a_name="in", $a_fulltext=false)
 Add an index to a table. More...
 
 addFulltextIndex ($a_table, $a_fields, $a_name="in")
 Add fulltext index. More...
 
 isFulltextIndex ($a_table, $a_name)
 Is index a fulltext index? More...
 
 indexExistsByFields ($a_table, $a_fields)
 Check if index exists. More...
 
 dropIndexByFields ($a_table, $a_fields)
 Drop index by field(s) More...
 
 dropIndex ($a_table, $a_name="in")
 Drop an index from a table. More...
 
 addUniqueConstraint ($a_table, $a_fields, $a_name="con")
 Add a unique constraint to a table. More...
 
 createSequence ($a_table_name, $a_start=1)
 Create a sequence for a table. More...
 
 dropSequence ($a_table_name)
 Drop a sequence for a table. More...
 
 checkTableName ($a_name)
 Check whether a table name is valid. More...
 
 checkTableColumns ($a_cols)
 Check table columns definition. More...
 
 checkColumn ($a_col, $a_def)
 Check column definition. More...
 
 checkColumnDefinition ($a_def, $a_modify_mode=false)
 Check whether a column definition is valid. More...
 
 checkColumnName ($a_name)
 Check whether a column name is valid. More...
 
 checkIndexName ($a_name)
 Check whether an index name is valid. More...
 
 getAllowedAttributes ()
 
 constraintName ($a_table, $a_constraint)
 Determine contraint name by table name and constraint name. More...
 
 query ($sql, $a_handle_error=true)
 Query. More...
 
 queryF ($a_query, $a_types, $a_values)
 Formatted query (for SELECTS). More...
 
 manipulateF ($a_query, $a_types, $a_values)
 Formatted manupulate (for DELETE, UPDATE, INSERT). More...
 
 logStatement ($sql)
 Helper function, should usually not be called. More...
 
 setLimit ($a_limit, $a_offset=0)
 Set limit and offset for a query. More...
 
 nextId ($a_table_name)
 Get next ID for an index. More...
 
 manipulate ($sql)
 Data manipulation. More...
 
 prepare ($a_query, $a_types=null, $a_result_types=null)
 Prepare a query (SELECT) statement to be used with execute. More...
 
 prepareManip ($a_query, $a_types=null)
 Prepare a data manipulation statement to be used with execute. More...
 
 execute ($a_stmt, $a_data=null)
 Execute a query statement prepared by either prepare() or prepareManip() More...
 
 executeMultiple ($a_stmt, $a_data)
 Execute a query statement prepared by either prepare() or prepareManip() with multiple data arrays. More...
 
 insert ($a_table, $a_columns)
 Convenient method for standard insert statements, example field array: More...
 
 update ($a_table, $a_columns, $a_where)
 Convenient method for standard update statements, example field array: More...
 
 replace ($a_table, $a_pk_columns, $a_other_columns)
 Replace into method. More...
 
 fetchAssoc ($a_set)
 Fetch row as associative array from result set. More...
 
 free ($a_st)
 Free a statement / result set. More...
 
 fetchObject ($a_set)
 Fetch row as object from result set. More...
 
 numRows ($a_set)
 Fetch row as associative array from result set. More...
 
 in ($a_field, $a_values, $negate=false, $a_type="")
 Get abstract in-clause for given array. More...
 
 addTypesToArray ($a_arr, $a_type, $a_cnt)
 Adds a type x times to an array. More...
 
 now ()
 now() More...
 
 concat ($a_values, $a_allow_null=true)
 Abstraction of SQL function CONCAT. More...
 
 substr ($a_exp, $a_pos=1, $a_len=-1)
 Substring. More...
 
 upper ($a_exp)
 Upper. More...
 
 lower ($a_exp)
 Upper. More...
 
 locate ($a_needle, $a_string, $a_start_pos=1)
 Create locate string. More...
 
 like ($a_col, $a_type, $a_value="?", $case_insensitive=true)
 Like. More...
 
 equals ($a_col, $a_value, $a_type, $a_empty_or_null=false)
 Use this only on text fields. More...
 
 equalsNot ($a_col, $a_value, $a_type, $a_empty_or_null=false)
 Use this only on text fields. More...
 
 fromUnixtime ($a_expr, $a_to_text=true)
 fromUnixtime (makes timestamp out of unix timestamp) More...
 
 unixTimestamp ()
 Unix timestamp. More...
 
 optimizeTable ($a_table)
 Optimize Table. More...
 
 tableExists ($a_table)
 Check, whether a given table exists. More...
 
 tableColumnExists ($a_table, $a_column_name)
 Checks for the existence of a table column. More...
 
 uniqueConstraintExists ($a_table, $a_fields)
 Checks if a unique constraint exists based on the fields of the unique constraint (not the name) More...
 
 listTables ()
 Get all tables. More...
 
 sequenceExists ($a_sequence)
 Check, whether a given sequence exists. More...
 
 listSequences ()
 Get all sequences. More...
 
 quote ($a_query, $a_type=null)
 Wrapper for quote method. More...
 
 quoteIdentifier ($a_identifier)
 Quote table and field names. More...
 
 beginTransaction ()
 Begin Transaction. More...
 
 commit ()
 Commit a transaction. More...
 
 rollback ()
 Rollback a transaction. More...
 
 lockTables ($a_tables)
 Abstraction of lock table. More...
 
 unlockTables ()
 Unlock tables locked by previous lock table calls. More...
 
 autoExecute ($a_tablename, $a_fields, $a_mode=MDB2_AUTOQUERY_INSERT, $a_where=false)
 Wrapper for Pear autoExecute. More...
 
 getLastInsertId ()
 Get last insert id. More...
 
 getOne ($sql)
 getOne. More...
 
 getRow ($sql, $mode=DB_FETCHMODE_OBJECT)
 getRow. More...
 
 setSubType ($a_value)
 Set sub type. More...
 
 getSubType ()
 Get sub type. More...
 
- Public Member Functions inherited from PEAR
 PEAR ($error_class=null)
 Constructor. More...
 
 _PEAR ()
 Destructor (the emulated type of...). More...
 
getStaticProperty ($class, $var)
 If you have a class that's mostly/entirely static, and you need static properties, you can use this method to simulate them. More...
 
 registerShutdownFunc ($func, $args=array())
 Use this function to register a shutdown method for static classes. More...
 
 isError ($data, $code=null)
 Tell whether a value is a PEAR error. More...
 
 setErrorHandling ($mode=null, $options=null)
 Sets how errors generated by this object should be handled. More...
 
 expectError ($code=' *')
 This method is used to tell which errors you expect to get. More...
 
 popExpect ()
 This method pops one element off the expected error codes stack. More...
 
 _checkDelExpect ($error_code)
 This method checks unsets an error code if available. More...
 
 delExpect ($error_code)
 This method deletes all occurences of the specified element from the expected error codes stack. More...
 
raiseError ($message=null, $code=null, $mode=null, $options=null, $userinfo=null, $error_class=null, $skipmsg=false)
 This method is a wrapper that returns an instance of the configured error class with this object's default error handling applied. More...
 
throwError ($message=null, $code=null, $userinfo=null)
 Simpler form of raiseError with fewer options. More...
 
 staticPushErrorHandling ($mode, $options=null)
 
 staticPopErrorHandling ()
 
 pushErrorHandling ($mode, $options=null)
 Push a new error handler on top of the error handler options stack. More...
 
 popErrorHandling ()
 Pop the last error handler used. More...
 
 loadExtension ($ext)
 OS independant PHP extension load. More...
 

Static Public Member Functions

static getReservedWords ()
 Get reserved words. More...
 
- Static Public Member Functions inherited from ilDB
static getReservedWords ()
 Get reserved words. More...
 
static isDbError ($a_res)
 Check error. More...
 
static isReservedWord ($a_word)
 Checks whether a word is a reserved word in one of the supported databases. More...
 

Data Fields

const CLOB_BUFFER_SIZE = 2000
 
const LIMIT_EXPRESSIONS_IN_LIST = 1000
 
- Data Fields inherited from ilDB
const LOCK_WRITE = 1
 
const LOCK_READ = 2
 
 $error_class
 
 $db
 
 $result
 
 $allowed_attributes
 
 $sub_type
 
- Data Fields inherited from PEAR
 $_debug = false
 
 $_default_error_mode = null
 
 $_default_error_options = null
 
 $_default_error_handler = ''
 
 $_error_class = 'PEAR_Error'
 
 $_expected_errors = array()
 

Additional Inherited Members

- Protected Member Functions inherited from ilDB
 initConnection ()
 Initialize the database connection. More...
 
 initHostConnection ()
 Initialize the host connection (no specific database) More...
 
 loadMDB2Extensions ()
 load additional mdb2 extensions and set their constants More...
 
 getCreateTableOptions ()
 Get options for the create table statement. More...
 

Detailed Description

Oracle Database Wrapper.

This class extends the main ILIAS database wrapper ilDB. Only a few methods should be overwritten, that contain Oracle specific statements and methods.

Author
Alex Killing alex..nosp@m.kill.nosp@m.ing@g.nosp@m.mx.d.nosp@m.e
Version
Id
class.ilDB.php 18989 2009-02-15 12:57:19Z akill

Definition at line 18 of file class.ilDBOracle.php.

Member Function Documentation

◆ concat()

ilDBOracle::concat (   $a_values,
  $a_allow_null = true 
)

CONCAT for oracle allows only the concatenation of two values.

Parameters
object$a_values
object$a_allow_null[optional]
Returns

Definition at line 341 of file class.ilDBOracle.php.

342  {
343  if(count($a_values) <= 2)
344  {
345  return parent::concat($a_values,false);
346  }
347 
348  $first = true;
349  foreach($a_values as $field_info)
350  {
351  if(!$first)
352  {
353  $concat_value = parent::concat(
354  array(
355  array($concat_value,$concat_type),
356  array($field_info[0],$field_info[1])),
357  false
358  );
359  }
360  else
361  {
362  $first = false;
363  $concat_value = $field_info[0];
364  $concat_type = $field_info[1];
365  }
366  }
367  return $concat_value;
368  }

◆ constraintName()

ilDBOracle::constraintName (   $a_table,
  $a_constraint 
)

Constraint names must be "globally" unique in oracle.

Definition at line 164 of file class.ilDBOracle.php.

165  {
166  return $a_table."_".$a_constraint;
167  }

◆ doConnect()

ilDBOracle::doConnect ( )

Standard way to connect to db.

Definition at line 98 of file class.ilDBOracle.php.

References MDB2\connect(), and getDSN().

99  {
100  $this->db = MDB2::connect($this->getDSN(),
101  array("use_transactions" => true));
102  }
& connect($dsn, $options=false)
Create a new MDB2 connection object and connect to the specified database.
Definition: MDB2.php:431
getDSN()
Get DSN.
+ Here is the call graph for this function:

◆ dropPrimaryKey()

ilDBOracle::dropPrimaryKey (   $a_table)

Drop a primary key from a table.

Parameters
stringtable name

Definition at line 473 of file class.ilDBOracle.php.

References $query, $res, and ilDB\handleError().

474  {
475  // oracle 10: dropping constraint may not drop attached index
476  // http://www.orafaq.com/forum/t/59807/0/
477 
478  $query = "ALTER TABLE ".$a_table." DROP PRIMARY KEY DROP INDEX";
479  $res = $this->db->query($query);
480 
481  return $this->handleError($res, "dropPrimaryKey(".$a_table.")");
482  }
handleError($a_res, $a_info="", $a_level="")
Handle MDB2 Errors.
Definition: class.ilDB.php:405
+ Here is the call graph for this function:

◆ fromUnixtime()

ilDBOracle::fromUnixtime (   $a_expr,
  $a_to_text = true 
)

fromUnixtime (makes timestamp out of unix timestamp)

Definition at line 137 of file class.ilDBOracle.php.

138  {
139  if (!$a_to_text)
140  {
141  return "TO_DATE('19700101000000','YYYYMMDDHH24MISS') ".
142  "+ NUMTODSINTERVAL(".$a_expr.", 'SECOND')";
143  }
144  else
145  {
146  return "to_char(TO_DATE('19700101000000','YYYYMMDDHH24MISS') ".
147  "+ NUMTODSINTERVAL(".$a_expr.", 'SECOND'), 'yyyy-mm-dd hh24:mi:ss')";
148  }
149  }

◆ getDBType()

ilDBOracle::getDBType ( )

Get DB Type.

Definition at line 52 of file class.ilDBOracle.php.

53  {
54  return "oracle";
55  }

◆ getDBVersion()

ilDBOracle::getDBVersion ( )

Definition at line 57 of file class.ilDBOracle.php.

References $query, $res, $row, DB_FETCHMODE_ASSOC, and MDB2\isError().

58  {
59  $query = 'SELECT * FROM v$version';
60  $res = $this->db->query($query);
61 
62  if(MDB2::isError($res))
63  {
64  return parent::getDBVersion();
65  }
66  $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
67  return isset($row['banner']) ? $row['banner'] : parent::getDBVersion();
68  }
isError($data, $code=null)
Tell whether a value is a MDB2 error.
Definition: MDB2.php:594
const DB_FETCHMODE_ASSOC
Definition: class.ilDB.php:10
+ Here is the call graph for this function:

◆ getDSN()

ilDBOracle::getDSN ( )

Get DSN.

Definition at line 27 of file class.ilDBOracle.php.

References $GLOBALS, ilDB\getDBHost(), ilDB\getDBName(), ilDB\getDBPassword(), ilDB\getDBPort(), and ilDB\getDBUser().

Referenced by doConnect().

28  {
29  // TODO: check if there is another solution.
30  // This works with 11g
31  if(!isset($GLOBALS['_MDB2_dsninfo_default']['charset']) or
32  $GLOBALS['_MDB2_dsninfo_default']['charset'] != 'utf8')
33  {
34  $GLOBALS['_MDB2_dsninfo_default']['charset'] = 'utf8';
35  }
36 
37  return array('phptype' => 'oci8',
38  'hostspec' => $this->getDBHost(),
39  'username' => $this->getDBUser(),
40  'password' => $this->getDBPassword(),
41  'port' => $this->getDBPort(),
42  'service' => $this->getDBName()
43  );
44 
45  //return "oci8://".$this->getDBUser().":".$this->getDBPassword()."@".
46  // $this->getDBHost()."/?service=".$this->getDBName();
47  }
getDBPort()
Get database port.
Definition: class.ilDB.php:113
getDBName()
Get database name.
Definition: class.ilDB.php:173
getDBHost()
Get database host.
Definition: class.ilDB.php:133
getDBUser()
Get database user.
Definition: class.ilDB.php:93
$GLOBALS['ct_recipient']
getDBPassword()
Get database password.
Definition: class.ilDB.php:153
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPrimaryKeyIdentifier()

ilDBOracle::getPrimaryKeyIdentifier ( )

Primary key identifier.

Definition at line 172 of file class.ilDBOracle.php.

173  {
174  return "pk";
175  }

◆ getReservedWords()

static ilDBOracle::getReservedWords ( )
static

Get reserved words.

Definition at line 73 of file class.ilDBOracle.php.

Referenced by ilDB\isReservedWord().

74  {
75  // version: 10g
76  // url: http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10759/ap_keywd.htm#g691972
77  return array(
78  "ACCESS", "ADD", "ALL", "ALTER", "AND", "ANY", "AS", "ASC",
79  "AUDIT", "BETWEEN", "BY", "CHAR", "CHECK", "CLUSTER", "COLUMN",
80  "COMMENT", "COMPRESS", "CONNECT", "CREATE", "CURRENT", "DATE",
81  "DECIMAL", "DEFAULT", "DELETE", "DESC", "DISTINCT", "DROP", "ELSE",
82  "EXCLUSIVE", "EXISTS", "FILE", "FLOAT", "FOR", "FROM", "GRANT", "GROUP",
83  "HAVING", "IDENTIFIED", "IMMEDIATE", "IN", "INCREMENT", "INDEX", "INITIAL",
84  "INSERT", "INTEGER", "INTERSECT", "INTO", "IS", "LEVEL", "LIKE", "LOCK", "LONG",
85  "MAXEXTENTS", "MINUS", "MLSLABEL", "MODE", "MODIFY", "NOAUDIT", "NOCOMPRESS", "NOT",
86  "NOWAIT", "NULL", "NUMBER", "OF", "OFFLINE", "ON", "ONLINE","OPTION",
87  "OR", "ORDER", "PCTFREE", "PRIOR", "PRIVILEGES", "PUBLIC", "RAW", "RENAME",
88  "RESOURCE", "REVOKE", "ROW", "ROWID", "ROWNUM", "ROWS", "SELECT", "SESSION", "SET",
89  "SHARE", "SIZE", "SMALLINT", "START", "SUCCESSFUL", "SYNONYM", "SYSDATE","TABLE",
90  "THEN", "TO", "TRIGGER", "UID", "UNION", "UNIQUE", "UPDATE", "USER","VALIDATE",
91  "VALUES", "VARCHAR", "VARCHAR2", "VIEW", "WHENEVER", "WHERE", "WITH"
92  );
93  }
+ Here is the caller graph for this function:

◆ in()

ilDBOracle::in (   $a_field,
  $a_values,
  $negate = false,
  $a_type = "" 
)

Overwritten implementation of $ilDB->in to avoid ORA-01795 (maximum number of expressions in a list is 1000)

This implementation rewrites the in clause to field IN (1,2,3,...,1000) OR field IN (1000,1001,...,2000)

Example: $ids = array(10,12,18); $st = $ilDB->prepare("SELECT * FROM table ". "WHERE ".$ilDB->in("id", $ids), $ilDB->addTypesToArray($types, "integer", count($ids))); $set = $ilDB->execute($st, $ids);

Definition at line 384 of file class.ilDBOracle.php.

References $in.

385  {
386  if(count($a_values) <= self::LIMIT_EXPRESSIONS_IN_LIST)
387  {
388  return parent::in($a_field,$a_values,$negate,$a_type);
389  }
390 
391  $first = true;
392  $concat = $negate ? ' AND ' : ' OR ';
393  $in = '(';
394  do
395  {
396  if(!$first)
397  {
398  $in .= $concat;
399 
400  }
401  $first = false;
402 
403  $spliced = array_splice($a_values, 0, self::LIMIT_EXPRESSIONS_IN_LIST);
404  $in .= parent::in($a_field, $spliced, $negate, $a_type);
405 
406  }
407  while($a_values);
408 
409  return $in." ) ";
410  }

◆ initConnection()

ilDBOracle::initConnection ( )

Initialize the database connection.

Definition at line 107 of file class.ilDBOracle.php.

References $GLOBALS, and ilDB\query().

108  {
109  $GLOBALS['_MDB2_dsninfo_default']['charset'] = 'utf8';
110  $this->query("ALTER SESSION SET nls_length_semantics='CHAR'");
111  $this->query("ALTER SESSION SET NLS_SORT = binary_ci");
112  }
query($sql, $a_handle_error=true)
Query.
$GLOBALS['ct_recipient']
+ Here is the call graph for this function:

◆ like()

ilDBOracle::like (   $a_col,
  $a_type,
  $a_value = "?",
  $case_insensitive = true 
)

Provisional LIKE support for oracle CLOB's Uses SUBSTR to reduce the length.

TODO: we can use self::CLOB_BUFFER_SIZE = 4000 since since the maximum buffer is 4000 byte and not 4000 chars

Parameters
object$a_col
object$a_type
object$a_value[optional]
object$case_insensitive[optional]
Returns

Definition at line 300 of file class.ilDBOracle.php.

References ilDB\quote(), and ilDB\raisePearError().

301  {
302  if($a_type == 'text')
303  {
304  return parent::like($a_col,$a_type,$a_value,$case_insensitive);
305  }
306 
307  if (!in_array($a_type, array("text", "clob", "blob")))
308  {
309  $this->raisePearError("Like: Invalid column type '".$a_type."'.", $this->error_class->FATAL);
310  }
311  if ($a_value == "?")
312  {
313  if ($case_insensitive)
314  {
315  return "UPPER(SUBSTR(".$a_col.",0,".self::CLOB_BUFFER_SIZE.")) LIKE(UPPER(?))";
316  }
317  else
318  {
319  return "SUBSTR(".$a_col .",0,".self::CLOB_BUFFER_SIZE.") LIKE(?)";
320  }
321  }
322  else
323  {
324  if ($case_insensitive)
325  {
326  return " UPPER(SUBSTR(".$a_col.",0,".self::CLOB_BUFFER_SIZE.")) LIKE(UPPER(".$this->quote($a_value, 'text')."))";
327  }
328  else
329  {
330  return " SUBSTR(".$a_col.",0,".self::CLOB_BUFFER_SIZE.") LIKE(".$this->quote($a_value, 'text').")";
331  }
332  }
333  }
raisePearError($a_message, $a_level="")
Raise an error.
Definition: class.ilDB.php:439
quote($a_query, $a_type=null)
Wrapper for quote method.
+ Here is the call graph for this function:

◆ locate()

ilDBOracle::locate (   $a_needle,
  $a_string,
  $a_start_pos = 1 
)

Create locate string.

Parameters
string$a_needle
string$a_string
int$a_start_pos[optional]
Returns

Definition at line 277 of file class.ilDBOracle.php.

278  {
279  $locate = ' INSTR( ';
280  $locate .= ('SUBSTR('.$a_string.',0,'.self::CLOB_BUFFER_SIZE.')');
281  $locate .= ',';
282  $locate .= $a_needle;
283  $locate .= ',';
284  $locate .= $a_start_pos;
285  $locate .= ') ';
286  return $locate;
287  }

◆ lockTables()

ilDBOracle::lockTables (   $a_tables)

Lock table.

E.g $ilDB->lockTable('tree',ilDB::LOCK_WRITE,'t1')

Parameters
string$a_name
int$a_mode
string$a_alias
Returns

Definition at line 422 of file class.ilDBOracle.php.

References $ilLog, ilDB\LOCK_READ, and ilDB\LOCK_WRITE.

423  {
424  global $ilLog;
425 
426  $locks = array();
427 
428  $counter = 0;
429  foreach($a_tables as $table)
430  {
431  $lock = 'LOCK TABLE ';
432 
433  $lock .= ($table['name'].' ');
434 
435  switch($table['type'])
436  {
437  case ilDB::LOCK_READ:
438  $lock .= ' IN SHARE MODE ';
439  break;
440 
441  case ilDB::LOCK_WRITE:
442  $lock .= ' IN EXCLUSIVE MODE ';
443  break;
444  }
445 
446  $locks[] = $lock;
447  }
448 
449  // @TODO use and store a unique identifier to allow nested lock/unlocks
450  $this->db->beginTransaction();
451  foreach($locks as $lock)
452  {
453  $this->db->query($lock);
454  $ilLog->write(__METHOD__.': '.$lock);
455  }
456  return true;
457  }
const LOCK_WRITE
Definition: class.ilDB.php:30
const LOCK_READ
Definition: class.ilDB.php:31

◆ now()

ilDBOracle::now ( )

now()

Todo:
fix this

Definition at line 129 of file class.ilDBOracle.php.

130  {
131  return "LOCALTIMESTAMP";
132  }

◆ replace()

ilDBOracle::replace (   $a_table,
  $a_pk_columns,
  $a_other_columns 
)

Replace into method.

Parameters
stringtable name
arrayprimary key values: array("field1" => array("text", $name), "field2" => ...)
arrayother values: array("field1" => array("text", $name), "field2" => ...)

Definition at line 192 of file class.ilDBOracle.php.

References $r, ilDB\handleError(), ilDB\insert(), ilDB\manipulate(), and ilDB\quote().

193  {
194  $a_columns = array_merge($a_pk_columns, $a_other_columns);
195  $fields = array();
196  $field_values = array();
197  $placeholders = array();
198  $types = array();
199  $values = array();
200  $lobs = false;
201  $lob = array();
202  $val_field = array();
203  $a = array();
204  $b = array();
205  foreach ($a_columns as $k => $col)
206  {
207  if($col[0] == 'clob' or $col[0] == 'blob')
208  {
209  $val_field[] = $this->quote($col[1], 'text')." ".$k;
210  }
211  else
212  {
213  $val_field[] = $this->quote($col[1], $col[0])." ".$k;
214  }
215  $fields[] = $k;
216  $placeholders[] = "%s";
217  $placeholders2[] = ":$k";
218  $types[] = $col[0];
219 
220  // integer auto-typecast (this casts bool values to integer)
221  if ($col[0] == 'integer' && !is_null($col[1]))
222  {
223  $col[1] = (int) $col[1];
224  }
225 
226  $values[] = $col[1];
227  $field_values[$k] = $col[1];
228  if ($col[0] == "blob" || $col[0] == "clob")
229  {
230  $lobs = true;
231  $lob[$k] = $k;
232  }
233  $a[] = "a.".$k;
234  $b[] = "b.".$k;
235  }
236  $abpk = array();
237  $aboc = array();
238  $delwhere = array();
239  foreach ($a_pk_columns as $k => $col)
240  {
241  $abpk[] = "a.".$k." = b.".$k;
242  $delwhere[] = $k." = ".$this->quote($col[1], $col[0]);
243  }
244  foreach ($a_other_columns as $k => $col)
245  {
246  $aboc[] = "a.".$k." = b.".$k;
247  }
248  if ($lobs) // delete/insert
249  {
250  $this->manipulate("DELETE FROM ".$a_table." WHERE ".
251  implode ($delwhere, " AND ")
252  );
253  $this->insert($a_table, $a_columns);
254 
255  //$r = $this->db->extended->autoExecute($a_table, $field_values, MDB2_AUTOQUERY_INSERT, null, $types);
256  $this->handleError($r, "replace, delete/insert(".$a_table.")");
257  }
258  else // if no lobs are used, use manipulate
259  {
260  $q = "MERGE INTO ".$a_table." a ".
261  "USING (SELECT ".implode($val_field, ", ")." ".
262  "FROM DUAL) b ON (".implode($abpk, " AND ").") ".
263  "WHEN MATCHED THEN UPDATE SET ".implode($aboc, ", ")." ".
264  "WHEN NOT MATCHED THEN INSERT (".implode($a, ",").") VALUES (".implode($b, ",").")";
265  $r = $this->manipulate($q);
266  }
267  return $r;
268  }
quote($a_query, $a_type=null)
Wrapper for quote method.
handleError($a_res, $a_info="", $a_level="")
Handle MDB2 Errors.
Definition: class.ilDB.php:405
insert($a_table, $a_columns)
Convenient method for standard insert statements, example field array:
manipulate($sql)
Data manipulation.
$r
+ Here is the call graph for this function:

◆ supportsFulltext()

ilDBOracle::supportsFulltext ( )

Is fulltext index supported?

Definition at line 180 of file class.ilDBOracle.php.

181  {
182  return false;
183  }

◆ unixTimestamp()

ilDBOracle::unixTimestamp ( )

Unix timestamp.

Definition at line 154 of file class.ilDBOracle.php.

155  {
156  // sysdate should respect database time zone
157  // current_date would respect session time zone
158  return "ROUND((sysdate - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400))";
159  }

◆ unlockTables()

ilDBOracle::unlockTables ( )

Unlock tables.

Returns

Definition at line 463 of file class.ilDBOracle.php.

464  {
465  $this->db->commit();
466  }

Field Documentation

◆ CLOB_BUFFER_SIZE

const ilDBOracle::CLOB_BUFFER_SIZE = 2000

Definition at line 20 of file class.ilDBOracle.php.

◆ LIMIT_EXPRESSIONS_IN_LIST

const ilDBOracle::LIMIT_EXPRESSIONS_IN_LIST = 1000

Definition at line 21 of file class.ilDBOracle.php.


The documentation for this class was generated from the following file: