0

是否可以从 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 ”。有人可以给我一些想法。

4

1 回答 1

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

如果它是部分 fa 包,则将其作为package_name; 如果不是,那么指定它为 null 会更安全,以防在其他地方使用相同的名称。如果过程重载,那么您将获得多个名称相似或相同的结果;我已经订购了,subprogram_id所以它们至少组合在一起。

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

于 2013-06-28T07:07:43.873 回答