首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server / Oracle 查詢存儲過程/視圖/觸發器中特定字串:系統目錄全掃描腳本

     編輯:關於SqlServer

Oracle 方案

-- 當前用戶物件
SELECT * FROM user_source 
WHERE LOWER(text) LIKE '%關鍵字%';

-- 全庫物件 (排除 SYS)
SELECT * FROM all_source 
WHERE owner != 'SYS' 
  AND text LIKE '%關鍵字%';

user_source/all_source 儲存 PL/SQL 原始碼,text 欄為 CLOB,INSTR/LIKE 均可。

SQL Server 方案

-- 方法 1:syscomments (舊版相容,text 為 NVARCHAR(4000) 分段儲存)
SELECT DISTINCT o.name, o.type_desc
FROM sysobjects o
JOIN syscomments c ON o.id = c.id
WHERE c.text LIKE '%關鍵字%';

-- 方法 2:sql_modules (SQL 2005+,definition 為完整 NVARCHAR(MAX))
SELECT o.name, o.type_desc, m.definition
FROM sys.sql_modules m
JOIN sys.objects o ON m.object_id = o.object_id
WHERE m.definition LIKE '%關鍵字%';

優勢:sql_modules.definition 不分段、無長度限制、查詢更簡潔。

進階:搜尋特定物件類型

-- 僅搜尋預存程序
WHERE o.type IN ('P', 'PC')  -- P=SQL SP, PC=CLR SP

-- 僅搜尋視圖/觸發器/函數
WHERE o.type IN ('V', 'TR', 'FN', 'IF', 'TF')

類型代碼速查

代碼類型
PSQL Stored Procedure
PCCLR Stored Procedure
VView
TRTrigger
FNScalar Function
IFInline Table-Valued Function
TFMulti-statement Table-Valued Function
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved