我只是寫一個工具來自動化一個過程。除此之外,我只是想讓它獲取存儲過程的名稱,如果我給出許多特效包的行號。是否有可能通過PL SQL中的行號來獲取存儲過程名稱?
是否可以這樣做,或者是否有其他方法可以通過行號或「特定文本」獲取過程名稱?
我只是寫一個工具來自動化一個過程。除此之外,我只是想讓它獲取存儲過程的名稱,如果我給出許多特效包的行號。是否有可能通過PL SQL中的行號來獲取存儲過程名稱?
是否可以這樣做,或者是否有其他方法可以通過行號或「特定文本」獲取過程名稱?
看一看all_procedures
也許你可以通過使用列subprogram_id看着辦吧。
看起來,這一列標識了它們在包頭中定義的過程。
工作太多,結果太不確定。相反,看一看PL/Scope ... http://stackoverflow.com/questions/26279075/how-to-get-information-on-all-types-of-data-declared-in-a-given-包/ 26279773#26279773 – nop77svk 2014-11-03 11:48:37
嘗試從SYS視圖中選擇ALL_SOURCE查詢所有者,包名稱和行號或所有者包的名稱和文本。
下面是兩個例子,假設您將用您自己的信息替換MYOWNER,MYPACKAGE,Myprocedure和MYLINENUMBER。
select * from ALL_SOURCE
where OWNER = 'MYOWNER' and
TYPE='PACKAGE' and
NAME='MYPACKAGE' and
TEXT like 'PROCEDURE Myprocedure%'
select * from ALL_SOURCE
where OWNER = 'MYOWNER' and
TYPE='PACKAGE' and
NAME='MYPACKAGE' and
LINE = MYLINENUMBER
如果您有多個過程,行號如何幫助?可能有2個程序具有相同的行號......你實際上試圖實現什麼?這感覺就像你制定瞭解決方案,但你需要幫助解決這個問題。 – Ben 2014-11-03 10:34:13
您是否在談論包裹中的行號? – 2014-11-03 10:38:13
是......在包內 – 2014-11-03 11:03:03