当前位置: 首页 > 知识库问答 >
问题:

用mybatis 3调用PL/SQL函数

岳飞航
2023-03-14

我有一个函数,它在PL/SQL中返回一个布尔值。我曾尝试直接获取那个布尔值,但没有成功,所以现在我试图将其转换为字符串(我不想修改数据库):

<parameterMap id="publicObject"   type="map">
<parameter javaType="java.lang.Object" jdbcType="VARCHAR" mode="OUT" property="result" /> 
<parameter javaType="java.lang.String" jdbcType="VARCHAR" mode="IN" property="id" /> 
</parameterMap>     

<select id="isPublicObject" parameterMap="publicObject" statementType="CALLABLE">

   <![CDATA[
    {
    declare
    v_bool BOOLEAN := TRUE;
    begin
    v_bool := PACKNAME.STF$IS_PUBLIC_OBJECT(#{id});
    #{result} := CASE WHEN v_bool THEN 'TRUE' ELSE 'FALSE' END;
    end;
    }
    ]]>

</select>

此代码在数据库中正常工作:

declare
    v_bool BOOLEAN := TRUE;
    v_str  VARCHAR2(5);
begin
   v_bool := PACKNAME.STF$IS_PUBLIC_OBJECT('000000');
   v_str := CASE WHEN v_bool THEN 'TRUE' ELSE 'FALSE' END;
   dbms_output.put_line('result:');
   dbms_output.put_line(v_str); 
end;

共有1个答案

岳英锐
2023-03-14

我编写了parametertype&map示例。它在我的测试数据上起作用。

XML:

<update id="isPublicObject" parameterType="map" statementType="CALLABLE">
    declare
        v_bool BOOLEAN := TRUE;
    begin
        v_bool := PACKNAME.STF$IS_PUBLIC_OBJECT(#{id});
        #{result,jdbcType=VARCHAR,mode=OUT} := CASE WHEN v_bool THEN 'TRUE' ELSE 'FALSE' END;
    end;
</update>

映射器:

public interface PLSQLMapper {
    public void isPublicObject(Map<String, Object> parameterMap);
}
PLSQLMapper mapper = session.getMapper(PLSQLMapper.class);

Map<String, Object> parameterMap = new HashMap<String, Object>();
parameterMap.put("id", 1);
mapper.isPublicObject(parameterMap);
System.out.println("result: " + parameterMap.get("result"));
 类似资料:
  • 问题内容: 所以我有一个功能可以检查预订表中有多少取消: 要在SQL中执行他,我使用: 我的结果是: 我的问题是有人可以帮助我在JAVA中调用该函数吗,我尝试过但没有运气。 问题答案: Java提供了这样的目的。 将打印与在pl / sql中相同的内容。根据文档, 创建一个CallableStatement对象以调用数据库存储过程。CallableStatement对象提供了用于设置其IN和OUT

  • 问题内容: 我想使用Java从数据库中检索数据并显示它,所以我创建了这个PL / SQL函数,该函数返回一个游标: 在我的Java代码中,我按以下方式调用该函数: 该代码产生以下异常: 为什么? 问题答案: 错误的可能原因是:(在代码段-函数中) 1.包“类型”不存在。 2无效的SQL select语句(创建函数后已删除或更改表或列)。 您需要编写一个with sql语句,并在提示符下使用代码运行

  • 问题内容: 任何人都可以帮我吗:我想从Pl / SQL,Oracle RDBMS调用一个Java程序,以下是设置 Windows 7计算机,Java安装在C:\ Program Files \ Java \ jdk1.7.0_02 我创建了一个目录来保存Java文件。D:\ Java,其中有一个hello.java文件。 可以很好地编译它,并在同一目录中生成.class文件。 由于我必须使用PL

  • 主要内容:1. 创建函数,2. 调用函数,3. PL/SQL递归函数在本章中,我们将讨论和学习PL/SQL中的函数。函数与过程(也叫程序)相同,只不过函数有返回一个值,而过程没有返回值。 因此,上一章中所有有关存储过程的内容也适用于函数。 1. 创建函数 使用语句创建独立函数。语句的简化语法如下: 其中, function-name是指定要创建的函数的名称。 [OR REPLACE]选项指示是否允许修改现有的函数。 可选参数列表包含参数的名称,模式和类型。 表示将

  • Oracle PL/SQL 调试器能指导你一步一步调试函数、过程、包和查询的代码。若要启动调试器,请点击对象设计器内的 “调试” 按钮。 你可以使用工具栏或菜单运行最常用的调试动作: 按钮 描述 运行 开始在调试模式下运行代码。如有需要,输入参数。调试器会运行你的代码直到代码结束或到达下一个断点。键盘快捷键:F9 逐过程 恢复运行。当前的行将被运行。如果该行是一个过程或函数调用,它会绕过过程或函数

  • Oracle PL/SQL 调试器能指导你一步一步调试函数、过程、包和查询的代码。若要启动调试器,请点击对象设计器内的 按钮。 你可以使用工具栏或菜单运行最常用的调试动作: 按钮 描述 开始在调试模式下运行代码。如有需要,输入参数。调试器会运行你的代码直到代码结束或到达下一个断点。键盘快捷键:F9 停止逐步运行代码。运行将停止,并且无法恢复。 恢复运行。当前的行将被运行。如果该行是一个过程或函数调