26 #require_once 'Zend/Db/Adapter/Abstract.php'; 31 #require_once 'Zend/Db/Statement/Oracle.php'; 114 if (!extension_loaded(
'oci8')) {
118 #require_once 'Zend/Db/Adapter/Oracle/Exception.php'; 122 $this->_setExecuteMode(OCI_COMMIT_ON_SUCCESS);
124 $connectionFuncName = ($this->_config[
'persistent'] ==
true) ?
'oci_pconnect' :
'oci_connect';
126 $this->_connection = @$connectionFuncName(
127 $this->_config[
'username'],
128 $this->_config[
'password'],
129 $this->_config[
'dbname'],
130 $this->_config[
'charset']);
133 if (!$this->_connection) {
137 #require_once 'Zend/Db/Adapter/Oracle/Exception.php'; 162 oci_close($this->_connection);
164 $this->_connection =
null;
175 $this->_lobAsString = (bool) $lobAsString;
186 if ($this->_lobAsString ===
null) {
188 if (isset($this->_config[
'driver_options']) &&
189 isset($this->_config[
'driver_options'][
'lob_as_string'])) {
190 $this->_lobAsString = (bool) $this->_config[
'driver_options'][
'lob_as_string'];
192 $this->_lobAsString =
false;
209 #require_once 'Zend/Loader.php'; 212 $stmt =
new $stmtClass($this, $sql);
216 $stmt->setFetchMode($this->_fetchMode);
232 return "'" . addcslashes(
$value,
"\000\n\r\\\032") .
"'";
260 $sql =
'SELECT '.$this->quoteIdentifier($sequenceName,
true).
'.CURRVAL FROM dual';
276 $sql =
'SELECT '.$this->quoteIdentifier($sequenceName,
true).
'.NEXTVAL FROM dual';
303 $sequenceName .=
"_$primaryKey";
305 $sequenceName .=
'_seq';
321 $data = $this->
fetchCol(
'SELECT table_name FROM all_tables');
359 $sql =
"SELECT TC.TABLE_NAME, TC.OWNER, TC.COLUMN_NAME, TC.DATA_TYPE, 360 TC.DATA_DEFAULT, TC.NULLABLE, TC.COLUMN_ID, TC.DATA_LENGTH, 361 TC.DATA_SCALE, TC.DATA_PRECISION, C.CONSTRAINT_TYPE, CC.POSITION 362 FROM ALL_TAB_COLUMNS TC 363 LEFT JOIN (ALL_CONS_COLUMNS CC JOIN ALL_CONSTRAINTS C 364 ON (CC.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND CC.TABLE_NAME = C.TABLE_NAME AND CC.OWNER = C.OWNER AND C.CONSTRAINT_TYPE = 'P')) 365 ON TC.TABLE_NAME = CC.TABLE_NAME AND TC.COLUMN_NAME = CC.COLUMN_NAME 366 WHERE UPPER(TC.TABLE_NAME) = UPPER(:TBNAME)";
369 $sql .=
' AND UPPER(TC.OWNER) = UPPER(:SCNAME)';
370 $bind[
':SCNAME'] = $schemaName;
372 $sql .=
' ORDER BY TC.COLUMN_ID';
374 $subSql=
"SELECT AC.OWNER, AC.TABLE_NAME, ACC.COLUMN_NAME, AC.CONSTRAINT_TYPE, ACC.POSITION 375 from ALL_CONSTRAINTS AC, ALL_CONS_COLUMNS ACC 376 WHERE ACC.CONSTRAINT_NAME = AC.CONSTRAINT_NAME 377 AND ACC.TABLE_NAME = AC.TABLE_NAME 378 AND ACC.OWNER = AC.OWNER 379 AND AC.CONSTRAINT_TYPE = 'P' 380 AND UPPER(AC.TABLE_NAME) = UPPER(:TBNAME)";
383 $subSql .=
' AND UPPER(ACC.OWNER) = UPPER(:SCNAME)';
384 $bind[
':SCNAME'] = $schemaName;
386 $sql=
"SELECT TC.TABLE_NAME, TC.OWNER, TC.COLUMN_NAME, TC.DATA_TYPE, 387 TC.DATA_DEFAULT, TC.NULLABLE, TC.COLUMN_ID, TC.DATA_LENGTH, 388 TC.DATA_SCALE, TC.DATA_PRECISION, CC.CONSTRAINT_TYPE, CC.POSITION 389 FROM ALL_TAB_COLUMNS TC, ($subSql) CC 390 WHERE UPPER(TC.TABLE_NAME) = UPPER(:TBNAME) 391 AND TC.OWNER = CC.OWNER(+) AND TC.TABLE_NAME = CC.TABLE_NAME(+) AND TC.COLUMN_NAME = CC.COLUMN_NAME(+)";
393 $sql .=
' AND UPPER(TC.OWNER) = UPPER(:SCNAME)';
395 $sql .=
' ORDER BY TC.COLUMN_ID';
398 $stmt = $this->
query($sql, $bind);
415 $constraint_type = 10;
420 list ($primary, $primaryPosition, $identity) = array(
false,
null,
false);
421 if (
$row[$constraint_type] ==
'P') {
423 $primaryPosition =
$row[$position];
433 'COLUMN_POSITION' =>
$row[$column_id],
434 'DATA_TYPE' =>
$row[$data_type],
435 'DEFAULT' =>
$row[$data_default],
436 'NULLABLE' => (
bool) (
$row[$nullable] ==
'Y'),
437 'LENGTH' =>
$row[$data_length],
438 'SCALE' =>
$row[$data_scale],
439 'PRECISION' =>
$row[$data_precision],
441 'PRIMARY' => $primary,
442 'PRIMARY_POSITION' => $primaryPosition,
443 'IDENTITY' => $identity
456 $this->_setExecuteMode(OCI_DEFAULT);
467 if (!oci_commit($this->_connection)) {
471 #require_once 'Zend/Db/Adapter/Oracle/Exception.php'; 474 $this->_setExecuteMode(OCI_COMMIT_ON_SUCCESS);
485 if (!oci_rollback($this->_connection)) {
489 #require_once 'Zend/Db/Adapter/Oracle/Exception.php'; 492 $this->_setExecuteMode(OCI_COMMIT_ON_SUCCESS);
511 $this->_fetchMode =
$mode;
517 #require_once 'Zend/Db/Adapter/Oracle/Exception.php'; 524 #require_once 'Zend/Db/Adapter/Oracle/Exception.php'; 546 #require_once 'Zend/Db/Adapter/Oracle/Exception.php'; 550 $offset = intval($offset);
555 #require_once 'Zend/Db/Adapter/Oracle/Exception.php'; 565 $limit_sql =
"SELECT z2.* 567 SELECT z1.*, ROWNUM AS \"zend_db_rownum\" 572 WHERE z2.\"zend_db_rownum\" BETWEEN " . ($offset+1) .
" AND " . ($offset+
$count);
580 private function _setExecuteMode(
$mode)
583 case OCI_COMMIT_ON_SUCCESS:
585 case OCI_DESCRIBE_ONLY:
586 $this->_execute_mode =
$mode;
592 #require_once 'Zend/Db/Adapter/Oracle/Exception.php'; 631 $version = oci_server_version($this->_connection);
634 if (preg_match(
'/((?:[0-9]{1,2}\.){1,3}[0-9]{1,2})/',
$version, $matches)) {
describeTable($tableName, $schemaName=null)
setLobAsString($lobAsString)
fetchOne($sql, $bind=array())
static loadClass($class, $dirs=null)
fetchCol($sql, $bind=array())
limit($sql, $count, $offset=0)
nextSequenceId($sequenceName)
quoteTableAs($ident, $alias=null, $auto=false)
_quoteIdentifierAs($ident, $alias=null, $auto=false, $as=' AS ')
if($exist=($block->getProductCollection() && $block->getProductCollection() ->getSize())) $mode
supportsParameters($type)
lastInsertId($tableName=null, $primaryKey=null)
query($sql, $bind=array())
lastSequenceId($sequenceName)