【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”,这个双引号导致的错误

上一篇:洛谷 P2196 [NOIP1996 提高组] 挖地雷


下一篇:bWAPP