oracle驱动修正

This commit is contained in:
thinkphp
2016-02-06 17:11:02 +08:00
parent ac5e6b2258
commit bc6b7e353f

View File

@@ -64,7 +64,7 @@ class Oracle extends Driver
$flag = false; $flag = false;
if (preg_match("/^\s*(INSERT\s+INTO)\s+(\w+)\s+/i", $sql, $match)) { if (preg_match("/^\s*(INSERT\s+INTO)\s+(\w+)\s+/i", $sql, $match)) {
$this->table = Config::get("db_sequence_prefix") . str_ireplace(Config::get("database.prefix"), "", $match[2]); $this->table = Config::get("db_sequence_prefix") . str_ireplace(Config::get("database.prefix"), "", $match[2]);
$flag        = (boolean) $this->query("SELECT * FROM all_sequences WHERE sequence_name='" . strtoupper($this->table) . "'"); $flag = (boolean) $this->query("SELECT * FROM all_sequences WHERE sequence_name='" . strtoupper($this->table) . "'");
} }
//释放前次的查询结果 //释放前次的查询结果
if (!empty($this->PDOStatement)) { if (!empty($this->PDOStatement)) {
@@ -101,14 +101,12 @@ class Oracle extends Driver
public function getFields($tableName) public function getFields($tableName)
{ {
list($tableName) = explode(' ', $tableName); list($tableName) = explode(' ', $tableName);
$result          = $this->query("select a.column_name,data_type,decode(nullable,'Y',0,1) notnull,data_default,decode(a.column_name,b.column_name,1,0) pk " $url = "select a.column_name,data_type,DECODE (nullable, 'Y', 0, 1) notnull,data_default, DECODE (A .column_name,b.column_name,1,0) pk from all_tab_columns a,(select column_name from all_constraints c, all_cons_columns col where c.constraint_name = col.constraint_name and c.constraint_type = 'P' and c.table_name = '" . strtoupper($tableName) . "' ) b where table_name = '" . strtoupper($tableName) . "' and a.column_name = b.column_name (+)";
            . "from all_tab_columns a,(select column_name from all_constraints c,all_cons_columns col " $result = $this->query($url);
            . "where c.constraint_name=col.constraint_name and c.constraint_type='P'and c.table_name='" . strtoupper($tableName) $info = [];
            . "') b where table_name='" . strtoupper($tableName) . "' and a.column_name=b.column_name(+)");
$info = [];
if ($result) { if ($result) {
foreach ($result as $key => $val) { foreach ($result as $key => $val) {
$val = array_change_key_case($val); $val = array_change_key_case($val);
$info[$val['column_name']] = [ $info[$val['column_name']] = [
'name' => $val['column_name'], 'name' => $val['column_name'],
'type' => $val['data_type'], 'type' => $val['data_type'],
@@ -130,7 +128,7 @@ class Oracle extends Driver
*/ */
public function getTables() public function getTables()
{ {
        $result = $this->query("select table_name from all_tables"); $result = $this->query("select table_name from all_tables");
$info = []; $info = [];
foreach ($result as $key => $val) { foreach ($result as $key => $val) {
$info[$key] = current($val); $info[$key] = current($val);