2016-02-13 78 views
2

我有一个Oracle Efficientble函数(我无法更改),我需要从Hibernate调用。从休眠调用Oracle存储功能

CREATE OR REPLACE EDITIONABLE FUNCTION 
"SCHEMA"."FUNCTION_NAME" 
(
    var1 IN CHAR DEFAULT NULL , 
    var2 IN CHAR DEFAULT NULL , 
    var3 OUT CHAR 
) 
RETURN NUMBER 
AS 
    ... 
END; 

不幸的是,我不知道该怎么做。我在这里看到了一些关于Session.doWork()的文章,但我无法弄清楚如何在这里完成这项工作。

回答

1

只要该功能不改变数据,您可以使用双表从查询中调用它。

select schema.function_name(:bind1,:bind2,:bind3) from dual; 
1

你可以尝试这样的:

Query query = session.createSQLQuery(
    "CALL myfunc(:param1)") 
    .setParameter("param1", "xyz");