oracle – 使用mybatis 3调用pl / sql函数
发布时间:2021-03-06 14:11:09 所属栏目:百科 来源:网络整理
导读:我有一个函数在pl / sql中返回一个布尔值.我试过了 直接获取该布尔值但没有成功,所以现在我正在尝试将其转换为字符串(我不想修改数据库): parameterMap id="publicObject" type="map"parameter javaType="java.lang.Object" jdbcType="VARCHAR" mode="OUT
|
我有一个函数在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;
解决方法我写了parameterType&地图示例.它适用于我的测试数据.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"));
(编辑:佛山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


