select SEQUENCE_NAME from user_sequences;
假如SEQUENCE_NAME的值是这种形式: SEQ_ORDER_MASTER_ID (ORDER_MASTER为表名)
select last_number from user_sequence where sequence_name='SEQUENCE_NAME';(查序列值,不过下面函数只需传入序列名称即可)
$$sequence='seq_order_master_id';
public static function getInsertId($sequence){
$sql = "select $sequence.nextval from dual";
$result = DB::query($sql)->execute();
return $result[0]['NEXTVAL'];
}
getInsertId方法返回的id值即为insert中即将插入的id值。
以下是oracle与mysql之间的几点区别:
1. oracle数据库中字段名都是大写,mysql不限,因此从数据库取出值在页面上调用时需注意大小写一致。
2. mysql用limit 而oracle用 rownum和order by组合
3. 多表链接时oracle每个join后面必须紧接on,而mysql可以将条件放在一个on中,并置后。
4. mysql 主键 有自增,而oracle中无,需自己定义方法查找序列实现自增。
5. mysql中text类型的数据 在oracle中会转成clob型
6. oracle中在使用group by 时,有一个规则需要遵守,即出现在select列表中的字段,如果没有在组函数中,那么必须出现在group by 子句中
7. 当两个表中有相同字段,并且链接查询这两个表时,order by 相同字段时必须标明是以哪个表中的相同字段排序。而在mysql中时是通过的.如自己遇到的timestamp字段未标明是哪个表中的,在oracle中报错
8. mysql中的int型 非空,有默认值的字段 移植到 oracle后,会改成 number,并将默认值清空
9. oracle查询时from 表名后面 不能加上as,直接跟表名, 不然会报错的,select t.username from test as t,而在mysql下是可以的
10. oracle中是没有substring这个函数的,mysql有的。oracle用substr这个函数
11. 对空值的判断,name != ""这样在mysql下不会报错的,但是oracle下会报错。在oracle下的要换成name is not null (name为clob类型就会报错)
12. mysql中的where 1 在oracle 对应为 where 1=1,oracle中书写where 1是错误的