[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法

[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法​ 目录 一、前言  二、调用存储过程Demo 三、代码说明 一、前言  我们知道在plsql里可以通过下面方式执行存储过程, 但是在代码里如何调用存储过程呢,我试了一些网上大家提供的方法,基本没用效

目录

一、前言 

二、调用存储过程Demo

三、代码说明


一、前言 

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

begin P_ACCOUNT(202004270000) ; end;

--或者

call  P_ACCOUNT(202004270000)

[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法

但是在代码里如何调用存储过程呢,我试了一些网上大家提供的方法,基本没用效果,包括在@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();
	}

[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法

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

公众号灵儿的笔记:zygxsq

本篇博客原帖链接:juejin.cn/post/699074…

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

三、代码说明

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();


参考文章

 www.it1352.com/956045.html

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

今天的文章[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/14856.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注