2014-11-03 27 views
0

我只是寫一個工具來自動化一個過程。除此之外,我只是想讓它獲取存儲過程的名稱,如果我給出許多特效包的行號。是否有可能通過PL SQL中的行號來獲取存儲過程名稱?

是否可以這樣做,或者是否有其他方法可以通過行號或「特定文本」獲取過程名稱?

+2

如果您有多個過程,行號如何幫助?可能有2個程序具有相同的行號......你實際上試圖實現什麼?這感覺就像你制定瞭解決方案,但你需要幫助解決這個問題。 – Ben 2014-11-03 10:34:13

+0

您是否在談論包裹中的行號? – 2014-11-03 10:38:13

+0

是......在包內 – 2014-11-03 11:03:03

回答

0

看一看all_procedures

也許你可以通過使用列subprogram_id看着辦吧。

看起來,這一列標識了它們在包頭中定義的過程。

+0

工作太多,結果太不確定。相反,看一看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

0

嘗試從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 
相關問題