用Mybatis向存储过程传递布尔参数。

问题描述 投票:0回答:1

我试图在Spring项目中使用Mybatis调用Oracle PLSQL过程。然而,我得到以下错误。Caused by: java.sql.SQLException.ORA-06553: PLS-306: wrong number or types of arguments in call to Spring project: 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}
        )

问题出在哪里?

java spring plsql mybatis spring-mybatis
1个回答
0
投票

我通过创建新的自定义包装过程并在其中声明布尔变量来解决这个问题,然后我将这些声明的变量传递给了java.sql.SQLException: ORA-06553: PLS-306: 错误的参数数量或类型。然后我将这些声明的变量传递给我的原始过程。这就解决了我的问题。

这里是页面的链接。(阅读'Wrapping PLSQL BOOLEAN, RECORD, and TABLE Types'部分)https:/docs.oracle.comcdF49540_01DOCjava.815a64684typesup1.htm。

© www.soinside.com 2019 - 2024. All rights reserved.