24 require_once
CORE_PATH .
'libs/db/adapters/pdo.php';
83 $this->pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,
false);
84 $this->
exec(
"alter session set nls_date_format = 'YYYY-MM-DD'");
94 public function limit($sql, $number)
96 if (!is_numeric($number) || $number < 0) {
99 if (eregi(
"ORDER[\t\n\r ]+BY", $sql)) {
100 if (stripos($sql,
"WHERE")) {
101 return eregi_replace(
"ORDER[\t\n\r ]+BY",
"AND ROWNUM <= $number ORDER BY", $sql);
103 return eregi_replace(
"ORDER[\t\n\r ]+BY",
"WHERE ROWNUM <= $number ORDER BY", $sql);
106 if (stripos($sql,
"WHERE")) {
107 return "$sql AND ROWNUM <= $number";
109 return "$sql WHERE ROWNUM <= $number";
124 return $this->
query(
"DROP TABLE $table");
129 return $this->
query(
"DROP TABLE $table");
148 $create_sql =
"CREATE TABLE $table (";
149 if (!is_array($definition)) {
150 new KumbiaException(
"Definición invalida para crear la tabla '$table'");
153 $create_lines = array();
155 $unique_index = array();
159 foreach ($definition as $field => $field_def) {
160 if (isset($field_def[
'not_null'])) {
161 $not_null = $field_def[
'not_null'] ?
'NOT NULL' :
'';
165 if (isset($field_def[
'size'])) {
166 $size = $field_def[
'size'] ?
'(' . $field_def[
'size'] .
')' :
'';
170 if (isset($field_def[
'index'])) {
171 if ($field_def[
'index']) {
172 $index[] =
"INDEX($field)";
175 if (isset($field_def[
'unique_index'])) {
176 if ($field_def[
'unique_index']) {
177 $index[] =
"UNIQUE($field)";
180 if (isset($field_def[
'primary'])) {
181 if ($field_def[
'primary']) {
182 $primary[] =
"$field";
185 if (isset($field_def[
'auto'])) {
186 if ($field_def[
'auto']) {
187 $this->
query(
"CREATE SEQUENCE {$table}_{$field}_seq START WITH 1");
190 if (isset($field_def[
'extra'])) {
191 $extra = $field_def[
'extra'];
195 $create_lines[] =
"$field " . $field_def[
'type'] . $size .
' ' . $not_null .
' ' . $extra;
197 $create_sql.= join(
',', $create_lines);
198 $last_lines = array();
199 if (count($primary)) {
200 $last_lines[] =
'PRIMARY KEY(' . join(
",", $primary) .
')';
203 $last_lines[] = join(
',', $index);
205 if (count($unique_index)) {
206 $last_lines[] = join(
',', $unique_index);
208 if (count($last_lines)) {
209 $create_sql.=
',' . join(
',', $last_lines) .
')';
211 return $this->
query($create_sql);
221 return $this->
fetch_all(
"SELECT table_name FROM all_tables");
234 if ($table && $primary_key) {
235 $sequence = $table .
"_" . $primary_key .
"_seq";
236 $value = $this->
fetch_one(
"SELECT $sequence.CURRVAL FROM dual");
250 $num = $this->
fetch_one(
"SELECT COUNT(*) FROM ALL_TABLES WHERE TABLE_NAME = '" . strtoupper($table) .
"'");
265 $describe = $this->
fetch_all(
"SELECT LOWER(ALL_TAB_COLUMNS.COLUMN_NAME) AS FIELD, LOWER(ALL_TAB_COLUMNS.DATA_TYPE) AS TYPE, ALL_TAB_COLUMNS.DATA_LENGTH AS LENGTH, (SELECT COUNT(*) FROM ALL_CONS_COLUMNS WHERE TABLE_NAME = '" . strtoupper($table) .
"' AND ALL_CONS_COLUMNS.COLUMN_NAME = ALL_TAB_COLUMNS.COLUMN_NAME AND ALL_CONS_COLUMNS.POSITION IS NOT NULL) AS KEY, ALL_TAB_COLUMNS.NULLABLE AS ISNULL FROM ALL_TAB_COLUMNS WHERE ALL_TAB_COLUMNS.TABLE_NAME = '" . strtoupper($table) .
"'");
266 $final_describe = array();
267 foreach ($describe as $key => $value) {
268 $final_describe[] = array(
269 "Field" => $value[
"field"],
270 "Type" => $value[
"type"],
271 "Null" => $value[
"isnull"] ==
"Y" ?
"YES" :
"NO",
272 "Key" => $value[
"key"] == 1 ?
"PRI" :
""
275 return $final_describe;