【问题标题】:Ibatis out params from stored procedure in Oracle 11gIbatis 从 Oracle 11g 中的存储过程中取出参数
【发布时间】:2023-03-12 17:35:01
【问题描述】:

我有一个存储过程,它具有三个输出参数,所有用户定义的类型。 我使用 ibatis 作为 Java 代码中的 ORM 来调用存储过程。 我如何在 ibatis xml 中配置这个存储过程调用 以及如何在我的 java 代码中获取结果。 程序测试( p_a int 默认为 0 , p_b in number 默认为 0,
p_criteria out TBL_A, p_baseline out TBL_B, p_results out TBL_C);

任何帮助将不胜感激。 谢谢, 加根苏瑞

【问题讨论】:

    标签: java oracle ibatis


    【解决方案1】:

    在您的 xml 配置中提供具有输入/输出模式的参数(jdbcType 是可选的):

    <procedure id="callProcedure1" parameterClass="map">
            {
                call procedure1(
                    #value1,jdbcType=DECIMAL,mode=INOUT#,
                    #value2,jdbcType=DECIMAL,mode=INOUT#,
                    #value3,jdbcType=DECIMAL,mode=INOUT#,
                    )
            }
    </procedure>
    

    在您的 dao 类中,只需从参数中获取结果:

    final Map<String, Object> params = new HashMap<String, Object>();
    //provide input parameters here
    params.put("value1", 1);
    AbstractSQLMapDao.queryForObject("namespace.callProcedure1", params);
    //retrieve you output
    Double value1 = params.get("value1")
    

    【讨论】:

    • 感谢您的及时回复。问题是 out 参数是用户定义的 oracle 类型。他们的 jdbctype 应该是什么。
    • 感谢您的及时回复。问题是 out 参数是用户定义的 oracle 类型。他们的jdbctype应该是什么。我尝试使用像 jdbcType="TBL_OPTIMSEEDS" typeName="TBL_OPTIMSEEDS" mode="INOUT" 这样的实际 oracle 类型。但我仍然收到错误---检查输出参数(注册输出参数失败)。 --- 原因:java.sql.SQLException:无效的列类型
    猜你喜欢
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多