1.字段大小写有所不同,特别注意,mysql不区分在小写,oracle区分大小,如果使用小写需要用“”进行引起。如yii ar 自定义t,在相关使用时,需要用“t”进行表示。
$criteria->order .= '"t".ID desc'; $models = AdminLog::model ()->with ( 'admin' )->findAll ( $criteria );
2.逻辑上,分组排序不同于mysql,需要用
$criteria->select = "ICON,ROW_NUMBER () OVER ( PARTITION BY ICON ORDER BY ordernum asc )"; // $criteria->group = "ICON"; $models = Menu::model ()->findAll ( $criteria );
3.主键自增也有所不同,凡原来涉及insert null操作相关地方,需要用OracleTools::getNewId()获取id进行替换,现在使用通用序列,后需特殊字段,需要进行特殊处理
protected function beforeSave() { $this->ID = OracleTools::getNewId (); if ($this->hasEventHandler ( 'onBeforeSave' )) { $event = new CModelEvent ( $this ); $this->onBeforeSave ( $event ); return $event->isValid; } else return true; }
<?php /** * * 现在简单实现,可以处理成,根据对应的表,生成对应的序列进行生成,主要同步自增id * */ class OracleTools { const TABLE_COMMOON = "seq_common"; /** * 通过序列获取最新的id */ public static function getNewId($tablename = "seq_common") { $id = sql_fetch ( "SELECT seq_common.nextVal newid FROM dual", 'newid' ); return $id; } }