zoukankan      html  css  js  c++  java
  • [亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法

    目录

    一、前言 

    二、调用存储过程Demo

    三、代码说明


    一、前言 

    我们知道在plsql里可以通过下面方式执行存储过程,

    begin P_ACCOUNT(202004270000) ; end;
    
    --或者
    
    call  P_ACCOUNT(202004270000)

    但是在代码里如何调用存储过程呢,我试了一些网上大家提供的方法,基本没用效果,包括在@Query后面加{call P_ACCOUNT(?,?)} 什么存储过程名称的,或者各种接口、实现类互相调用的,都是千篇一律,不知道哪家copy哪家的,都没有任何效果 。
    或者这些方法对他们的项目可能有用,亦是我的姿势可能不对,但是总的来说,下面这个方法是我亲测可用的,而且实现起来相对更简单,十行代码都不到就能实现

    二、调用存储过程Demo

    
    //公众号灵儿的笔记:zygxsq
        @Transactional
    	@Modifying
    	@Query
    	public void callProcedureSend(Long Id){
    		logger.info("调用存储过程P_ACCOUNT({})",new Object[]{Id});
    
    		StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery("P_ACCOUNT");
    
    		storedProcedure.registerStoredProcedureParameter("A_ID", Long.class, ParameterMode.IN);
    		storedProcedure.registerStoredProcedureParameter("result", String.class, ParameterMode.OUT);
    		storedProcedure.setParameter("A_ID", Id);
    		boolean execute = storedProcedure.execute();
    
            //博客原帖链接:https://blog.csdn.net/qq_27471405/article/details/105794591
    
    		//获取返回结果
    		String result = storedProcedure.getOutputParameterValue("result").toString();
    	}

    防盗链防爬虫说明:搜索小小鱼儿小小林的博客,更多代码免费看

    公众号灵儿的笔记:zygxsq

    本篇博客原帖链接:https://blog.csdn.net/qq_27471405/article/details/105794591

    其他地方使用一律为盗取或者爬虫爬取

    三、代码说明

    P_ACCOUNT :就是在oracle中的存储过程名称

    A_ID :就是入参,如果还有其他入参,就再写一行,

    storedProcedure.registerStoredProcedureParameter("xxx参数", 参数类型, ParameterMode.IN);

    我这里的入参id是一个number类型,所以这里用Long.class,如果是char类型,这里就用String.class

    result:这里是自定义一个返回值的参数名称,如果存储过程有返回值返回,就加这行代码,如果没有的话,就不需要加这两行了
     storedProcedure.registerStoredProcedureParameter("result", String.class, ParameterMode.OUT);

    String result = storedProcedure.getOutputParameterValue("result").toString();


    参考文章

     https://www.it1352.com/956045.html

    感谢原作者的分享,让技术人能够更快的解决问题

  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/jalenFish/p/14099003.html
Copyright © 2011-2022 走看看