使用Mybatis将布尔参数传递给存储过程



我正在尝试在Spring项目中使用Mybatis调用Oracle PL/SQL过程。然而,我得到了以下错误:由以下原因引起:java.sql.sql异常:ORA-06553:PLS-306:调用时参数数量或类型错误

布尔参数有问题,因为当我删除它时,它工作得很好。(process_now参数在过程中是可选的(当我用SQL Developer调用存储过程时,它可以很好地工作。

<select id="processUser" statementType="CALLABLE" parameterType="UserResult">
CALL myprocedure(
user_id => #{userId, jdbcType=NUMERIC, mode=IN},
description => #{description, jdbcType=VARCHAR, mode=IN},
process_now => #{processNow, jdbcType=BOOLEAN, mode=IN},
response => #{response, jdbcType=NUMERIC, mode=OUT}
)

可能是什么问题?

我通过创建新的自定义包装过程并在其中声明布尔变量来解决这个问题。然后我将这些声明的变量传递给我的原始过程。这解决了我的问题。

以下是页面链接:(阅读"包装PL/SQL BOOLEAN、RECORD和TABLE类型"部分(https://docs.oracle.com/cd/F49540_01/DOC/java.815/a64684/typesup1.htm

最新更新