簡體   English   中英

SQL Server:如何從數據庫中的所有存儲過程中找到特定值?

[英]SQL Server : how can I find the specific value from all stored procedures in my database?

如何從我的 SQL Server 數據庫中的所有存儲過程中找到特定值?

更具體地說,我想知道插入到指定表的指定列中的值。

例如:

  • 一個數據庫有3個存儲過程; dbo.sp_1dbo.sp_2dbo.sp_3
  • 並且該數據庫還有一個[Log]表,其中有一個[number]

dbo.sp_1

INSERT INTO [dbo].[Log] ([number]) 
VALUES (1);

dbo.sp_2

INSERT INTO [dbo].[Log] ([number]) 
VALUES (2);

dbo.sp_3

INSERT INTO [dbo].[Log] ([number]) 
VALUES (4);

所以,我期望的查詢結果如下:

在此處輸入圖像描述

我找到了一個用於類似任務的片段,但是,我不必解析值。 如果您真的必須解析 sql,這可能會讓您接近。 抱歉,剩下的解析交給你

DECLARE @NonEscapeTextToFindLike NVARCHAR(MAX) = 'INSERTINTO\[dbo\].\[LOG\](\[number\])VALUES('
DECLARE @NonEscapeTextToFind NVARCHAR(MAX) = 'INSERTINTO[dbo].[LOG]([number])VALUES('

;WITH Procs AS
(
    SELECT 
        StoredProcedure = name,
        StoredProcedureText = OBJECT_DEFINITION(object_id),
        NoBlankText = REPLACE(REPLACE(REPLACE(REPLACE(OBJECT_DEFINITION(object_id),' ',''),CHAR(9),''),CHAR(10),''),CHAR(13),'')
    FROM   
        sys.procedures
)

SELECT
    *,
    StartOfPossibleInt = CHARINDEX(@NonEscapeTextToFind, Procs.NoBlankText) + LEN(@NonEscapeTextToFind)
FROM
    Procs
WHERE
    Procs.NoBlankText LIKE '%'+@NonEscapeTextToFindLike+'%' ESCAPE '\'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM