gpt4 book ai didi

java - 使用 StoredProcedureQuery 调用 Oracle 函数?

转载 作者:行者123 更新时间:2023-12-02 05:30:01 25 4
gpt4 key购买 nike

我正在尝试使用 javax.persistence.StoredProcedureQuery 调用 Oracle PL/SQL 函数我收到错误 PLS-00221: 'function_name' 不是过程或未定义

所以我认为不可能使用 StoredProcedureQuery 调用 Oracle 函数?

我没有看到 JPA 提供调用函数的接口(interface)(与存储过程相反)。那么我该如何实现呢?

最佳答案

作为 ukchaudhary 答案的补充:

So I assume its not possible to call an Oracle function usingStoredProcedureQuery?

是的,完全正确。 Oracle 同时具有存储过程函数StoredProcedureQuery 可用于调用存储过程,但不能调用存储函数,至少在 Oracle 上不能(因此得名)。

为了调用函数,JPA 在 JPA 中提供了 FUNCTION 关键字。这允许从 JPQL 查询内部调用函数。例如,函数“hasGoodCredit”的调用方式如下:

SELECT c FROM Customer c
WHERE FUNCTION(‘hasGoodCredit’, c.balance, c.creditLimit)

请参阅 JPA 规范,Invocation of Predefined and User-defined Database Functions .

但是,FUNCTION 仅适用于常规 JPQL 语句(SELECT、UPDATE、DELETE 等),因此它不能用于执行数据操作 (DML) 的 Oracle 函数,因为这些函数只能单独调用。

因此,此类函数无法通过JPA调用。您必须使用 JDBC 或 native 查询。

关于java - 使用 StoredProcedureQuery 调用 Oracle 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25649326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com