2013-06-28 80 views
0

是否可以從java代碼中獲取存儲過程[Oracle]的OUT參數名稱。像從java中獲取存儲過程參數名稱

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

我不認爲有一種方式來獲得它直接從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;如果不是,那麼在其他地方使用相同名稱的情況下指定它爲空則更爲安全。如果程序超載,那麼你會得到幾個結果具有相似或相同的名稱;我已訂購subprogram_id,所以它們至少分組在一起。

如果它不在您的模式中,那麼您可以改爲查看all_arguments,但在查詢中也指定owner

+0

嗨亞歷克斯,它符合我的目的。非常感謝。 –