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;
}
}