【JAVA使用】Mybatis Plus调用Oracle存储过程

DAO层

void方法,参数为待传入的对象

void checkFirst(DccfEntity dccfEntity);

注意:OUT返回的结果会直接更新到这个对象上

Mapper层

<select id="checkFirst" statementType="CALLABLE" parameterType="xxxxx">
		{
			call  YDJW_XD.p_check_fjdcxr_dccf
			(
				#{test1,jdbcType=VARCHAR,mode=IN}, #{test2,jdbcType=VARCHAR,mode=IN},
				#{testresult1,mode=OUT,jdbcType=VARCHAR}
			)

			}
	</select>

标签无所谓,用select、insert、update都可以,根据业务情况自定就行

存储过程

存储过程大概意思是这样的

create or replace procedure ydjw_xd.p_check_fjdcxr_dccf(test1 in varchar2,test2 varchar2, testresult1 out varchar2) is
    test1n number;
    test2n number;
    testM varchar2(1024);
  begin
   xxxxx具体逻辑xxxx
       commit;
       return;
  end p_check_fjdcxr_dccf;

主要踩过的坑

1. 参数和存储过程不一致

ORA-06553:PLS-306:wrong number or types of arguments in call to ‘’
可能会报这个错误
检查一下参数的数量类型 是否能对应的上

2. OUT的值没赋值

identifier ‘’ must be declared ORA-06550: line 1, column 7: PL/sql: Statemen
可能会报这个错误
检查一下OUT是不是没给值,如果是varchar直接给个"1"都可以,存储过程成功后会更新

3. 没加schema

Hint: No function matches the given name and argument ty
可能会报这个错误
直接说没找到函数,如果是需要切换模式才能访问的话,需要前面加上格式
比如ydjw_xd.p_check_fjdcxr_dccf

4. 模式后的方法名不正确

ERROR: schema “ydjw_xd” does not exist
可能会报这个错误
不确定为什么方法名不会会报这个错误,出现这个错误的问题是开始时候把ydjw_xd.p_check_fjdcxr_dccf写成了ydjw_xd.“p_check_fjdcxr_dccf”,这个双引号导致的错误

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...