从java获取存储过程OUT参数名称

时间:2013-06-28 05:04:14

标签: java oracle stored-procedures

是否可以从java代码中获取存储过程[Oracle]的OUT参数名称。像

PROCEDURE Test(  
       ecm_property  OUT SYS_REFCURSOR,
       p_return_value  OUT NOCOPY  INT,
       p_error_message OUT NOCOPY  VARCHAR2) 
     AS  
     BEGIN..

从上面,我想得到名称“ p_return_value ”和“ p_error_message ”。 有人可以给我一些想法。

1 个答案:

答案 0 :(得分:1)

我认为没有办法直接从Java中获取元数据,但您可以查询数据字典以获取此信息:

select argument_name,  data_type, in_out
from user_arguments
where package_name is null
and object_name = 'TEST'
order by subprogram_id, position;

ARGUMENT_NAME                  DATA_TYPE                      IN_OUT  
------------------------------ ------------------------------ ---------
ECM_PROPERTY                   REF CURSOR                     OUT       
P_RETURN_VALUE                 NUMBER                         OUT       
P_ERROR_MESSAGE                VARCHAR2                       OUT

如果它是包的一部分,那么将其作为package_name;如果不是那么指定在其他地方使用相同名称时为null则更安全。如果程序过载,那么你会得到几个名字相似或相同的结果;我已按subprogram_id订购,因此它们至少组合在一起。

如果它不在您的架构中,那么您可以查看all_arguments,但也可以在查询中指定owner