Oracle 在参数&x27中使用带布尔值的@NamedPLSQLStoredFunctionQuery;SYS.SQLJUTL';未安装

Oracle 在参数&x27中使用带布尔值的@NamedPLSQLStoredFunctionQuery;SYS.SQLJUTL';未安装,oracle,jakarta-ee,jpa,eclipselink,jpa-annotations,Oracle,Jakarta Ee,Jpa,Eclipselink,Jpa Annotations,环境 -JavaSE 6、Oracle 11、WebSphere 7、eclipseLink 2.5.2 用例 我们想使用 @NamedPLSQLStoredFunctionQuery 像这样: @NamedPLSQLStoredFunctionQuery (name = "convertToString", functionName = "my_schema.my_package.convert_to_string", parameters = { @PLS

环境 -JavaSE 6、Oracle 11、WebSphere 7、eclipseLink 2.5.2

用例 我们想使用

@NamedPLSQLStoredFunctionQuery
像这样:

@NamedPLSQLStoredFunctionQuery
   (name = "convertToString",
    functionName = "my_schema.my_package.convert_to_string",
    parameters =
      { @PLSQLParameter(name = "p_boolean", databaseType = "BOOLEAN") },
        returnParameter = @PLSQLParameter(name = "RESULT", databaseType = "VARCHAR_TYPE"))
Query query = em.createNamedQuery("convertToString");
        query.setParameter("p_boolean", true);
        Object result = query.getSingleResult();
        System.out.println("result=" + result);
然后执行如下功能:

@NamedPLSQLStoredFunctionQuery
   (name = "convertToString",
    functionName = "my_schema.my_package.convert_to_string",
    parameters =
      { @PLSQLParameter(name = "p_boolean", databaseType = "BOOLEAN") },
        returnParameter = @PLSQLParameter(name = "RESULT", databaseType = "VARCHAR_TYPE"))
Query query = em.createNamedQuery("convertToString");
        query.setParameter("p_boolean", true);
        Object result = query.getSingleResult();
        System.out.println("result=" + result);
和/或

Query query = em.createNamedQuery("convertToInteger");
        query.setParameter("p_boolean", true);
        Object result = query.getSingleResult();
        System.out.println("result=" + result);
我们的Oracle功能实现如下所示:

CREATE OR REPLACE package body my_schema.my_package
as
    /**
    * Converts the given boolean into an integer (true: 1, false: 0).
    * @param p_boolean boolean value to convert to an integer
    */
    function convert_to_integer
    (
        p_boolean   in boolean
    )
        return integer
    is
    begin
        if (p_boolean = true) then
            return isac_api.api_boolean_constants_pg.integer_true;
        end if;

        return isac_api.api_boolean_constants_pg.integer_false;
    end;

    /**
    * Converts the given boolean into a string (true: 'true', false: 'false').
    * @param p_boolean boolean value to convert
    */
    function convert_to_string
    (
        p_boolean   in boolean
    )
        return varchar2
    is
    begin
        if (p_boolean = true) then
            return isac_api.api_boolean_constants_pg.string_true;
        end if;

        return isac_api.api_boolean_constants_pg.string_false;
    end;
end;
这真的不管用

问题

  • 有什么问题
  • 如果不允许在数据库上安装'SYS.SQLJUTL',但eclipseLink似乎将其用于转换,我们该怎么办
问候
Jan

“它实际上不起作用”-请解释一下。是否产生了错误消息,或者您没有得到预期的结果,或者什么。。?就SQLJUTL而言,您有两个选择—安装软件包,或者不使用依赖于该软件包的任何东西。祝你好运。这不是日食问题,这是你的查询问题,甚至是函数本身的问题。您是否尝试过在数据库客户端或直接在JDBC中执行它?如果你不能让它在那里工作,它在JPA中也不会工作。问题是我们得到以下错误:PLS-00201:必须声明标识符'SYS.SQLJUTL'