【发布时间】:2012-07-04 16:16:35
【问题描述】:
由于要求,我必须从另一个存储过程调用一个存储过程。
问题似乎出在我正在使用的输出参数out_result_size 附近。当我测试main_func 时它工作正常,但是当我测试synonym_proc 时它说
synonym_proc 无效
我最终必须使用 JPA 的 @NamedNativeQuery 从 Java 调用 synonym_proc
CREATE OR REPLACE PROCEDURE synonym_proc (
result_cursor OUT SYS_REFCURSOR,
in_cp_id IN NUMBER,
in_cp_name IN VARCHAR2 := NULL,
in_country_name IN VARCHAR2 := NULL,
in_industry_name IN VARCHAR2 := NULL,
in_max_result_size IN NUMBER
) AS
out_result_size NUMBER;
BEGIN
result_cursor := someSchema.somePackage.main_func(in_cp_id,
in_cp_name,
in_country_name,
in_industry_name,
in_max_result_size,
out_result_size);
END;
更新:很抱歉没有提及我之前没有注意到的问题的变化。 main_func 是一个函数(不是过程),它返回一个游标并驻留在某个模式中的某个包内。编译时出现以下编译错误:
错误:PLS-00201:标识符“SOMESCHEMA.SOMEPACKAGE”必须是 声明..语句被忽略。
更新 2
一些架构定义
CREATE OR REPLACE PACKAGE someSchema."SomePackage"
is
...
function mainFunc
(
in_cp_id in gem.tcp_real_profile_main_approved.cp%type
, in_cp_name in gem.tcp_real_profile_main_approved.name%type
, in_country_name in gem.tcp_real_profile_main_approved.country_name%type
, in_industry_name in gem.tcp_real_profile_main_approved.industry_name%type
, in_max_result_size in number
, out_result_size out number
)
return search_result_type_cursor;
添加
type search_result_type_cursor
is ref cursor
return search_type;
是的,数据类型是正确的,因为我描述了函数 (main_func) 并交叉验证了数据类型。
【问题讨论】:
-
是的,无效。当你真正尝试编译这个过程时,你会得到什么?
-
我在问题中提到过。 “错误:PLS-00201:必须声明标识符 'SOMESCHEMA.SOMEPACKAGE'.. 语句被忽略。”
-
而someSchema.somePackage.main_func的定义是什么?
-
@tbone,请参阅更新 2
-
您将
sys_refcursor与可能是强类型的search_result_type_cursor混合在一起。这是故意的还是必要的?
标签: oracle stored-procedures plsql