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