要查詢存儲過程涉及的表:連接到數(shù)據庫。查詢 all_object_tables 視圖,過濾出存儲過程涉及的表(object_name 與存儲過程 object_name 匹配,排除臨時表,表名不包含 $)。結果將包含存儲過程名稱 (object_name) 和涉及的表名稱 (table_name)。
Oracle 查詢存儲過程涉及的表
要查詢存儲過程涉及的表,可以使用 Oracle 的數(shù)據字典視圖。這些視圖包含有關 Oracle 數(shù)據庫對象的信息。
步驟:
-
連接到 Oracle 數(shù)據庫。
查詢以下視圖:
<code class="sql">SELECT
*
FROM
ALL_OBJECT_TABLES
WHERE
OBJECT_NAME IN (
SELECT
OBJECT_NAME
FROM
ALL_OBJECTS
WHERE
OBJECT_TYPE = 'PROCEDURE'
AND SCHEMA_NAME = 'YOUR_SCHEMA_NAME'
)
AND TABLE_NAME NOT LIKE '%$%'
AND TEMPORARY = 'N'
ORDER BY
OBJECT_NAME,
TABLE_NAME;</code>
登錄后復制
結果:
該查詢將返回以下列的信息:
OBJECT_NAME:存儲過程的名稱
TABLE_NAME:存儲過程涉及的表的名稱
示例:
如果有一個名為 GET_CUSTOMER_DATA 的存儲過程,并且該存儲過程涉及 CUSTOMER 和 ORDERS 表,則查詢結果將類似于以下內容:
<code class="sql">OBJECT_NAME TABLE_NAME GET_CUSTOMER_DATA CUSTOMER GET_CUSTOMER_DATA ORDERS</code>
登錄后復制
說明:
ALL_OBJECT_TABLES 視圖包含有關數(shù)據庫中所有表的元數(shù)據信息。
ALL_OBJECTS 視圖包含有關數(shù)據庫中所有對象(包括存儲過程)的元數(shù)據信息。
TABLE_NAME 列可能會包含 $ 標志,這表示表是 Oracle 內部使用的臨時表。這些表應從結果中排除。
TEMPORARY 列指示表是否是臨時表。臨時表在會話結束后將被刪除,因此應從結果中排除。






