基本上我想做的是从我的java类调用oracle管道函数。这个oracle函数只有一个out参数。
答案 0 :(得分:1)
如果您尝试在PL / SQL中调用流水线函数,即在SQL外部,则会出现错误PLS-00653: aggregate/table functions are not allowed in PL/SQL scope
。
如果您尝试在SQL中调用带有OUT
参数的函数,则会出现错误ORA-06572: Function MYFUNC has out arguments
。
因此,将这两者放在一起,如果你有一个带OUT
参数的流水线函数,就不能在SQL中调用它,也不能在SQL之外调用它。换句话说,你根本不能打电话。基本上,它是一个无用的功能。为什么Oracle允许你编译它是一个谜。
您需要修改您的功能,使其(a)不是流水线,或(b)没有OUT
参数。
答案 1 :(得分:0)
在这里,我看不出使用CallableStatement对象从包函数中获取表数据的任何特殊需求。 相反,我们可以使用普通的sql查询来包装结果并将它们提取到普通的java结果集中。 这样做,我们避免尝试找到一个痛苦的解决方案来调整包函数(使用包级别类型),保持函数和包类型不变,以及继续受益于使用未知的内部功能和流水线plsql函数的速度。 Panos Zafiropoulos。