繁体   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