mysql转oracle注意事项

1.mysql中有自增长,oracle用新建sequence代替。

2.在实体类的id要指定相关的sequence

   @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_pl_policy")     
   @SequenceGenerator(name="seq_pl_policy",allocationSize=1,initialValue=1, sequenceName="seq_pl_policy")

3.注意数据库中的数据类型改动,比如text转为clob等

4.注意数据库中列的名称中不能含有oracle中的关键词,如:size,date等

5.在sql代码中,oracle比mysql严格;例子如下:

  mysql中可以写group by createtime desc而oracle只能写group by createtime。

  mysql中可以出现size和date作为别名,但oracle会报错。

  mysql中可以使用“||”,而oracle只能用or。

  mysql中别名可以是 AS 'highLevelNum' ,而oracle只能是AS  highLevelNum

  mysql中在select中可以出现非group by 中的列,而oracle中必须是只能是group by中的列。如:

       mysql中:select t.c_eve_level as evelevel,to_char(t.c_create_time,"yyyymmddhh24") as evetime,sum(t.c_match_num) as evematch

       from t_eve t

      where 1 = 1 and (t.c_from_email <> NULL or t.c_from_email <> '')

      group by t.c_eve_level,t.c_create_time

      order by t.c_create_time desc

  oracle中:select t.c_eve_level as evelevel,to_char(t.c_create_time,"yyyymmddhh24") as evetime,sum(t.c_match_num) as evematch

       from t_eve t

      where 1 = 1 and (t.c_from_email <> NULL or t.c_from_email <> '')

      group by t.c_eve_level,to_char(t.c_create_time,,"yyyymmddhh24")

      order by to_char(t.c_create_time,,"yyyymmddhh24") desc

6.sql脚本中用到的函数,mysql和oracle也不同。

  mysql中用ifnull,oracle用nvl或decode。

  mysql中用left,oracle用substr。

  mysql中用if,oracle可以用decode。

  mysql中用dateformat,oracle可以用to_char。

  mysql可以用日期和相同格式的字符串比较,而oracle只能用转成相同类型再比较。

7.在oracle中如果一个事务中执行的sql较多,就会报错。可以在配置文件id为sessionFactory中添加<prop key="hibernate.jdbc.batch_size">50</prop>

原文地址:https://www.cnblogs.com/shz365/p/7650857.html