oracle转postgreSQL修改点

oracle转postgreSQL修改点

查询结果

postgre中可以用string_agg函数实现相同的功能,具体用法如下:

SELECT
    tr_gw_no,
    string_agg ( tr_status :: TEXT, ',' ) status
FROM
    trade 
WHERE
    tr_gw_no = 12198006 
    OR tr_gw_no = 12167001 
GROUP BY
    tr_gw_no;

20、start with connect by函数的题:

oracle的这个函数是用来查树形结构的,即同一张的表的记录有父子级关系的那种。oracle中用法如下:

select module_id
    from sys_modules
start with module_id = ?
connect by prior module_id = module_fid;

这就表示查询module_id?的所有子module,即父模块idmodule_fid?的所有的记录。postgre可以用WITH RECURSIVE实现相同的效果,如下:

WITH RECURSIVE subtabela AS (
    SELECT
        module_id 
    FROM
        sys_modules 
    WHERE
        module_id = ? UNION ALL
    SELECT
        tt.module_id 
    FROM
        sys_modules tt
        INNER JOIN subtabela st ON tt.module_fid = st.module_id 
    ) SELECT
    * 
FROM
    subtabela;

21、存储过程调用的问题:

postgre11开始,支持存储过程procedure,之前的版本只支持function。通过代码去调用存储过程时,要注意以下三点:

  • 调用存储过程的sql语句不需要加大括号,加了大括号的调用的是function而不是procedure;
  • 如果存储过程中用了事务,那个在代码中调用时就不要使用spring的事务了,否则会冲突;
  • 如果存储过程有inout参数,表示这个即是输入又是输出参数,都要进行设置,oracle可以只当作输入或者输出来用。

比如现在有一个名为test_procedure(IN "id" int4, INOUT "result" int4)的存储过程,java中调用方式如下:

Session session = sessionFactory.getCurrentSession();
Connection conn = session.connection();
CallableStatement cs = null;
Integer returnInfo = -1;
cs = conn.prepareCall("call p_paynum_processing_create(?,?)");
// oracle中调用要加大括号
// cs = conn.prepareCall("{call p_paynum_processing_create(?,?)}");
// 输入的参数
cs.setInt(1, id.intValue());
// 输出的参数
cs.setInt(2, -1); // oracle中这一行可以不用
cs.registerOutParameter(2, Types.INTEGER);
// 执行存储过程
cs.execute();
// 获取返回值,-1为操作异常
returnInfo = cs.getInt(2);

22、连接查询的问题:

oracle中外连接可以这样写:

select * from tableA a, tableB b  where a.id = b.id(+);

(+)的一方是副表,另一方是主表,即上面那种写法表示左外连接。postgre不支持这种写法,可以用left join代替。

23、instr函数的问题:

instr函数表示包含,postgre中可以用strpos函数替代。

文章均来自互联网如有不妥请联系作者删除QQ:314111741 地址:http://www.mqs.net/post/15492.html

相关阅读

  • 网站网络推广代运营(网站代运营你需要了解下)

    网站网络推广代运营(网站代运营你需要了解下)

    随着互联网的快速发展,各种网络营销手段层出不穷,其中网络营销平台的兴起就是其中的一种。随着网络营销平台越来越多,也就出现了许多网络营销公司,网络推广公司又有哪种形式的呢?网络营销公司提供多种网络营销服务:SEO优化、品牌营销、商业...

    2025.12.10 19:22:53作者:iseeyuTags:运营
  • 容易涨粉的短视频素材2022-07-1510:55来源:米鱼素

    容易涨粉的短视频素材2022-07-1510:55来源:米鱼素

    原标题:容易涨粉的短视频素材 抖音拍什么视频容易热门,涨粉快(推荐以下9类抖音素材建议,总有适合你的视频内容) 许多刚刚玩抖音的朋友,在早期阶段不知道如何开始,也不知道该拍什么素材。今天我要和你谈谈,入门拍抖音哪些内容最容易下手。...

    2025.12.10 16:52:52作者:iseeyuTags:丑人什么生活音拍化妆视频内容美颜不知道
  • 毕业设计-商城小程序

    毕业设计-商城小程序

    主页.jpg 分类.jpg 优惠劵.png 秒杀.png 登录.png 商品详情.png 购物车.png 订单.png 后台_2.pn...

    2025.12.10 15:11:35作者:iseeyu

添加新评论