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>
次に、次の例外が発生します:「データベースのクエリ中にエラーが発生しました。原因: org.apache.ibatis.type.TypeException: Error setting null for parameter #2 with JdbcType OTHER.このパラメーターに別の JdbcType を設定するか、別の jdbcTypeForNull 構成プロパティを設定してみてください。 : java.sql.SQLException: 列の型が無効です: 1111 ####
このコードはデータベースで正しく機能します。
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;