| @@ 502-548 (lines=47) @@ | ||
| 499 | * @param string $table |
|
| 500 | * @return array |
|
| 501 | */ |
|
| 502 | public function field_data($table) |
|
| 503 | { |
|
| 504 | if (strpos($table, '.') !== FALSE) |
|
| 505 | { |
|
| 506 | sscanf($table, '%[^.].%s', $owner, $table); |
|
| 507 | } |
|
| 508 | else |
|
| 509 | { |
|
| 510 | $owner = $this->username; |
|
| 511 | } |
|
| 512 | ||
| 513 | $sql = 'SELECT COLUMN_NAME, DATA_TYPE, CHAR_LENGTH, DATA_PRECISION, DATA_LENGTH, DATA_DEFAULT, NULLABLE |
|
| 514 | FROM ALL_TAB_COLUMNS |
|
| 515 | WHERE UPPER(OWNER) = '.$this->escape(strtoupper($owner)).' |
|
| 516 | AND UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); |
|
| 517 | ||
| 518 | if (($query = $this->query($sql)) === FALSE) |
|
| 519 | { |
|
| 520 | return FALSE; |
|
| 521 | } |
|
| 522 | $query = $query->result_object(); |
|
| 523 | ||
| 524 | $retval = array(); |
|
| 525 | for ($i = 0, $c = count($query); $i < $c; $i++) |
|
| 526 | { |
|
| 527 | $retval[$i] = new stdClass(); |
|
| 528 | $retval[$i]->name = $query[$i]->COLUMN_NAME; |
|
| 529 | $retval[$i]->type = $query[$i]->DATA_TYPE; |
|
| 530 | ||
| 531 | $length = ($query[$i]->CHAR_LENGTH > 0) |
|
| 532 | ? $query[$i]->CHAR_LENGTH : $query[$i]->DATA_PRECISION; |
|
| 533 | if ($length === NULL) |
|
| 534 | { |
|
| 535 | $length = $query[$i]->DATA_LENGTH; |
|
| 536 | } |
|
| 537 | $retval[$i]->max_length = $length; |
|
| 538 | ||
| 539 | $default = $query[$i]->DATA_DEFAULT; |
|
| 540 | if ($default === NULL && $query[$i]->NULLABLE === 'N') |
|
| 541 | { |
|
| 542 | $default = ''; |
|
| 543 | } |
|
| 544 | $retval[$i]->default = $default; |
|
| 545 | } |
|
| 546 | ||
| 547 | return $retval; |
|
| 548 | } |
|
| 549 | ||
| 550 | // -------------------------------------------------------------------- |
|
| 551 | ||
| @@ 210-256 (lines=47) @@ | ||
| 207 | * @param string $table |
|
| 208 | * @return array |
|
| 209 | */ |
|
| 210 | public function field_data($table) |
|
| 211 | { |
|
| 212 | if (strpos($table, '.') !== FALSE) |
|
| 213 | { |
|
| 214 | sscanf($table, '%[^.].%s', $owner, $table); |
|
| 215 | } |
|
| 216 | else |
|
| 217 | { |
|
| 218 | $owner = $this->username; |
|
| 219 | } |
|
| 220 | ||
| 221 | $sql = 'SELECT COLUMN_NAME, DATA_TYPE, CHAR_LENGTH, DATA_PRECISION, DATA_LENGTH, DATA_DEFAULT, NULLABLE |
|
| 222 | FROM ALL_TAB_COLUMNS |
|
| 223 | WHERE UPPER(OWNER) = '.$this->escape(strtoupper($owner)).' |
|
| 224 | AND UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); |
|
| 225 | ||
| 226 | if (($query = $this->query($sql)) === FALSE) |
|
| 227 | { |
|
| 228 | return FALSE; |
|
| 229 | } |
|
| 230 | $query = $query->result_object(); |
|
| 231 | ||
| 232 | $retval = array(); |
|
| 233 | for ($i = 0, $c = count($query); $i < $c; $i++) |
|
| 234 | { |
|
| 235 | $retval[$i] = new stdClass(); |
|
| 236 | $retval[$i]->name = $query[$i]->COLUMN_NAME; |
|
| 237 | $retval[$i]->type = $query[$i]->DATA_TYPE; |
|
| 238 | ||
| 239 | $length = ($query[$i]->CHAR_LENGTH > 0) |
|
| 240 | ? $query[$i]->CHAR_LENGTH : $query[$i]->DATA_PRECISION; |
|
| 241 | if ($length === NULL) |
|
| 242 | { |
|
| 243 | $length = $query[$i]->DATA_LENGTH; |
|
| 244 | } |
|
| 245 | $retval[$i]->max_length = $length; |
|
| 246 | ||
| 247 | $default = $query[$i]->DATA_DEFAULT; |
|
| 248 | if ($default === NULL && $query[$i]->NULLABLE === 'N') |
|
| 249 | { |
|
| 250 | $default = ''; |
|
| 251 | } |
|
| 252 | $retval[$i]->default = $query[$i]->COLUMN_DEFAULT; |
|
| 253 | } |
|
| 254 | ||
| 255 | return $retval; |
|
| 256 | } |
|
| 257 | ||
| 258 | // -------------------------------------------------------------------- |
|
| 259 | ||