当前位置: 首页 > 面试题库 >

MyBatis批注可调用存储过程并获取参数

长孙硕
2023-03-14
问题内容

我正在将MyBAtis-3与MyBAtis-
Spring一起使用。当我尝试调用使用MyBatis批注返回多个参数的存储过程时。我什么也没得到,我可以看到输入参数已传递到日志中的SP,并且挂在那里,没有进度,也没有抛出异常。

PFB我试图从MyBAtis访问的Oracle存储过程,

create or replace PROCEDURE C2C.GET_DATA
(
  "IN_PARAM1" IN NUMBER,
   "OUT_PARAM2" OUT SAMPLETABLE.COL2%TYPE,
   "OUT_PARAM3" OUT SAMPLETABLE.COL3%TYPE,
   "OUT_PARAM4" OUT SAMPLETABLE.COL4%TYPE
  )  AS

  BEGIN
    SELECT PARAM2,PARAM3,PARAM4 INTO 
    OUT_PARAM2,OUT_PARAM3,OUT_PARAM4
    FROM C2C.SAMPLETABLE WHERE PARAM1=IN_PARAM1 ;

  END C2C.GET_DATA;

PFB映射器接口方法,

@Select(value= "{ CALL  C2C.GET_DATA( #{param1, mode=IN, jdbcType=INTEGER},#{param2, mode=OUT, jdbcType=VARCHAR},#{param3, mode=OUT, jdbcType=INTEGER},#{param4, mode=OUT, jdbcType=INTEGER})}")
@Options(statementType = StatementType.CALLABLE)
public void getData(Test test);

Test对象包含在存储过程调用语句中作为输入传递的参数。

当我执行此操作时,它会挂在这里,

main Slf4jImpl 
==>  Preparing: { CALL C2C.GET_DATA(?,?,?,?)}

main Slf4jImpl 
==> Parameters: 60(Integer)

问题答案:

令人惊讶的是,如果我使用@Insert批注,它将按预期工作。调用存储过程时有些奇怪的行为。让我知道是否还有其他办法可以解决这个问题。



 类似资料:
  • 本文向大家介绍Mybatis调用PostgreSQL存储过程实现数组入参传递,包括了Mybatis调用PostgreSQL存储过程实现数组入参传递的使用技巧和注意事项,需要的朋友参考一下 前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: 如上所示,参数是一个int数组,

  • 我在Oracle 11g数据库中有一个存储过程,如f(a输入,b输入,c输出)。我想在批处理模式下从JDBC调用它,然后读取所有的OUT变量。 这可能吗?到目前为止我有这个 谢谢

  • 我正在编写一个Spring批处理应用程序: null

  • 我试图调用一个基本的oracle pl/sql存储过程,该过程从表student(姓名、年龄、电子邮件)返回一个字符串。我使用的是命名存储过程注释,但在执行逻辑时出错。谢谢你的帮助。 这就是我犯的错误 错误2864---[nio-8080-exec-1]o.a.c.c.c.[/]。[dispatcherServlet]:Servlet。路径为[]的上下文中servlet[dispatcherSer

  • 问题内容: 我试图在postgres 9.3上使用sql调用函数内的函数。 这个问题与我的另一篇文章有关。 我写了下面的函数。到目前为止,我还没有合并任何类型的save-output(COPY)语句,因此我试图通过创建嵌套函数print-out函数来解决此问题。 以上功能有效。 尝试创建嵌套函数。 调用嵌套函数。 输出 上面给出了这个。但是,当在print_out()中将arg1,arg2替换为’

  • 我使用JDBC这样调用这个过程: 它向我抛出一个错误,通知调用格式错误。 但是如果我像这样直接在IDE中运行调用: