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

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

  • 相关阅读:
    Mongodb常用操作(转载)
    java中对象转换工具类,很好用
    IDEA中配置tomcat出现乱码的解决
    小山博客--面试题答案
    Redis简单配置和使用
    线程的控制和线程池
    进程与线程详细解释
    Quartz .Net(定时框架):
    C#面向对象几组关键字的详解(this,base,dynamic,var,const,readonly,is,as)
    C#设计模式--抽象工厂模式(创建型模式)
  • 原文地址:https://www.cnblogs.com/jalenFish/p/14099003.html
Copyright © 2011-2022 走看看