Search of table names

前端 未结 9 1406
傲寒
傲寒 2021-01-29 22:10

I use the following to search for strings in my stored procedures:

use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE \'%xxx%\'
<         


        
9条回答
  •  南笙
    南笙 (楼主)
    2021-01-29 23:03

    I am assuming you want to pass the database name as a parameter and not just run:

    SELECT  *
    FROM    DBName.sys.tables
    WHERE   Name LIKE '%XXX%'
    

    If so, you could use dynamic SQL to add the dbname to the query:

    DECLARE @DBName NVARCHAR(200) = 'YourDBName',
            @TableName NVARCHAR(200) = 'SomeString';
    
    IF NOT EXISTS (SELECT 1 FROM master.sys.databases WHERE Name = @DBName)
        BEGIN
            PRINT 'DATABASE NOT FOUND';
            RETURN;
        END;
    
    DECLARE @SQL NVARCHAR(MAX) = '  SELECT  Name
                                    FROM    ' + QUOTENAME(@DBName) + '.sys.tables
                                    WHERE   Name LIKE ''%'' + @Table + ''%''';
    
    EXECUTE SP_EXECUTESQL @SQL, N'@Table NVARCHAR(200)', @TableName;
    

提交回复
热议问题