2013-08-02 36 views

回答

17

根據您的需求,這可能就足夠了(但依賴於訪問V $ SESSION和DBA_OBJECTS):

select 'CALLED PLSQL', vs.username, d_o.object_name -- whatever info you need 
    from dba_objects d_o 
     inner join 
     v$session vs 
      on d_o.object_id = vs.plsql_entry_object_id 
union all 
select 'CURRENT PLSQL', vs.username, d_o.object_name 
    from dba_objects d_o 
     inner join 
     v$session vs 
      on d_o.object_id = vs.plsql_object_id 

按照文檔:

PLSQL_ENTRY_OBJECT_ID - 最上面的PL的ID /堆棧上的SQL子程序;如果堆棧中沒有PL/SQL子程序,則爲NULL

PLSQL_OBJECT_ID - 當前正在執行的PL/SQL子程序的對象ID; NULL,如果執行SQL

+0

謝謝。這正是我需要的。現在已經有機會問你是否知道是否有可能看到特定程序正在運行的查詢!? –

+2

您可以添加v $ sql以獲取當前正在運行的SQL:LEFT OUTER JOIN v $ sql vsq ON vsq.sql_id = vs.sql_id並將vsq.sql_fulltext添加到SELECT列表中。哦,你可能想包括WHERE vs.status ='ACTIVE'。 –

+0

我已經完成了你所說的,它顯示了我想要的,但是生成值的位置出現在B3:,:B2中。你不能顯示實際值? –

相關問題