27 #require_once 'Zend/Db/Adapter/Pdo/Abstract.php'; 86 if (isset($dsn[
'host'])) {
87 $tns =
'dbname=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)' .
88 '(HOST=' . $dsn[
'host'] .
')';
90 if (isset($dsn[
'port'])) {
91 $tns .=
'(PORT=' . $dsn[
'port'] .
')';
93 $tns .=
'(PORT=1521)';
96 $tns .=
'))(CONNECT_DATA=(SID=' . $dsn[
'dbname'] .
')))';
98 $tns =
'dbname=' . $dsn[
'dbname'];
101 if (isset($dsn[
'charset'])) {
102 $tns .=
';charset=' . $dsn[
'charset'];
105 return $this->_pdoType .
':' . $tns;
123 return "'" . addcslashes(
$value,
"\000\n\r\\\032") .
"'";
146 $data = $this->
fetchCol(
'SELECT table_name FROM all_tables');
184 $sql =
"SELECT TC.TABLE_NAME, TC.OWNER, TC.COLUMN_NAME, TC.DATA_TYPE, 185 TC.DATA_DEFAULT, TC.NULLABLE, TC.COLUMN_ID, TC.DATA_LENGTH, 186 TC.DATA_SCALE, TC.DATA_PRECISION, C.CONSTRAINT_TYPE, CC.POSITION 187 FROM ALL_TAB_COLUMNS TC 188 LEFT JOIN (ALL_CONS_COLUMNS CC JOIN ALL_CONSTRAINTS C 189 ON (CC.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND CC.TABLE_NAME = C.TABLE_NAME AND CC.OWNER = C.OWNER AND C.CONSTRAINT_TYPE = 'P')) 190 ON TC.TABLE_NAME = CC.TABLE_NAME AND TC.COLUMN_NAME = CC.COLUMN_NAME 191 WHERE UPPER(TC.TABLE_NAME) = UPPER(:TBNAME)";
194 $sql .=
' AND UPPER(TC.OWNER) = UPPER(:SCNAME)';
195 $bind[
':SCNAME'] = $schemaName;
197 $sql .=
' ORDER BY TC.COLUMN_ID';
199 $subSql=
"SELECT AC.OWNER, AC.TABLE_NAME, ACC.COLUMN_NAME, AC.CONSTRAINT_TYPE, ACC.POSITION 200 from ALL_CONSTRAINTS AC, ALL_CONS_COLUMNS ACC 201 WHERE ACC.CONSTRAINT_NAME = AC.CONSTRAINT_NAME 202 AND ACC.TABLE_NAME = AC.TABLE_NAME 203 AND ACC.OWNER = AC.OWNER 204 AND AC.CONSTRAINT_TYPE = 'P' 205 AND UPPER(AC.TABLE_NAME) = UPPER(:TBNAME)";
208 $subSql .=
' AND UPPER(ACC.OWNER) = UPPER(:SCNAME)';
209 $bind[
':SCNAME'] = $schemaName;
211 $sql=
"SELECT TC.TABLE_NAME, TC.OWNER, TC.COLUMN_NAME, TC.DATA_TYPE, 212 TC.DATA_DEFAULT, TC.NULLABLE, TC.COLUMN_ID, TC.DATA_LENGTH, 213 TC.DATA_SCALE, TC.DATA_PRECISION, CC.CONSTRAINT_TYPE, CC.POSITION 214 FROM ALL_TAB_COLUMNS TC, ($subSql) CC 215 WHERE UPPER(TC.TABLE_NAME) = UPPER(:TBNAME) 216 AND TC.OWNER = CC.OWNER(+) AND TC.TABLE_NAME = CC.TABLE_NAME(+) AND TC.COLUMN_NAME = CC.COLUMN_NAME(+)";
218 $sql .=
' AND UPPER(TC.OWNER) = UPPER(:SCNAME)';
220 $sql .=
' ORDER BY TC.COLUMN_ID';
223 $stmt = $this->
query($sql, $bind);
240 $constraint_type = 10;
245 list ($primary, $primaryPosition, $identity) = array(
false,
null,
false);
246 if (
$row[$constraint_type] ==
'P') {
248 $primaryPosition =
$row[$position];
258 'COLUMN_POSITION' =>
$row[$column_id],
259 'DATA_TYPE' =>
$row[$data_type],
260 'DEFAULT' =>
$row[$data_default],
261 'NULLABLE' => (
bool) (
$row[$nullable] ==
'Y'),
262 'LENGTH' =>
$row[$data_length],
263 'SCALE' =>
$row[$data_scale],
264 'PRECISION' =>
$row[$data_precision],
266 'PRIMARY' => $primary,
267 'PRIMARY_POSITION' => $primaryPosition,
268 'IDENTITY' => $identity
327 $sequenceName .= $this->
foldCase(
"_$primaryKey");
329 $sequenceName .= $this->
foldCase(
'_seq');
350 #require_once 'Zend/Db/Adapter/Exception.php'; 354 $offset = intval($offset);
357 #require_once 'Zend/Db/Adapter/Exception.php'; 367 $limit_sql =
"SELECT z2.* 369 SELECT z1.*, ROWNUM AS \"zend_db_rownum\" 374 WHERE z2.\"zend_db_rownum\" BETWEEN " . ($offset+1) .
" AND " . ($offset+
$count);
fetchOne($sql, $bind=array())
lastSequenceId($sequenceName)
fetchCol($sql, $bind=array())
quoteTableAs($ident, $alias=null, $auto=false)
describeTable($tableName, $schemaName=null)
limit($sql, $count, $offset=0)
lastInsertId($tableName=null, $primaryKey=null)
_quoteIdentifierAs($ident, $alias=null, $auto=false, $as=' AS ')
nextSequenceId($sequenceName)
quoteIdentifier($ident, $auto=false)
query($sql, $bind=array())