php获取oracle数据库表名,php与oracle数据库实现由序列获取当前表可insert的id值

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是错误的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值