如何从java调用oracle函数

Jav*_*ons 3 java oracle function return-value

如何从java调用oracle函数?

我有一个oracle函数aaa.fucntion(number,date);,这个方法返回true或false。如何从java调用它并获取返回值?

我在用 Hibernate

这是我试过的,

Session session = null;
            String associateHistorySQL="";

            try {
                session = HibernateUtil.currentSession();

                associateHistorySQL = "SELECT aa.myFunction(:aorId,:givenDate) from dual";

                Query associateHistoryQuery = session.createQuery(associateHistorySQL);

                associateHistoryQuery.setParameter("aorId", associateOfficeRecordId);
                associateHistoryQuery.setParameter("givenDate", date);

                List associateHistoryList = associateHistoryQuery.list();

                if (associateHistoryList != null && associateHistoryList.size() > 0 && new Integer(associateHistoryQuery.uniqueResult().toString()) > 0)
                    return true;
                else
                    return false;
            } finally {
                HibernateUtil.cleanUpHibernateFromDao(false);
            }
Run Code Online (Sandbox Code Playgroud)

这是我得到的例外 unexpected token: aa: line 1:1: unexpected token: aa

谢谢

Dar*_*ila 5

实际上有多种方法可以做到这一点。但其中最简单的是触发查询。这是如何做到的。

String sql="select myFunction('"+number+"','"+date"') from dual";
statement.execute(sql);
Run Code Online (Sandbox Code Playgroud)

如果您使用 JDBC,请设置输入和输出参数。

如果您使用的是休眠状态,请使用类似这样的命名查询: YourMapping.hbm.xml

<sql-query name="my_function" callable="true">
<return alias="demo" class="net.bean.Demo">
<return-property name="id" column="id"/>
<return-property name="fname" column="fname"/>
<return-property name="lname" column="lname"/>
</return>
    {?=call demoFunc(:param1,:param2)}
</sql-query>
Run Code Online (Sandbox Code Playgroud)

现在这将为函数创建一个命名查询

接下来要做的就是使用以下代码调用它

Query query=session.getNamedQuery("my_function");
query.setParameter("parma1",date);
query.setParameter("parma2",number);
query.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

请注意,在 hbm.xml 文件中,如果函数返回适当的值,则返回类名称和属性仅适用于您已映射返回值的情况。