分享:sp_get_object 实例下查找指定对象名

USE master 
go 
IF OBJECT_ID( 'sp_get_object' ,'P') IS NOT NULL 
DROP PROCEDURE sp_get_object
go 
CREATE PROCEDURE sp_get_object
    (
      @objectname NVARCHAR(128) = '',
      @db TINYINT = 0
    )
AS 
--  作者:陈恩辉-弘恩 
	SET NOCOUNT ON ;

    IF @db = 1 
        SELECT  DB_NAME() AS db_name , type , name
        FROM    sys.objects
        WHERE   name LIKE @objectname
    ELSE 
        BEGIN 
            SELECT TOP 0
                    DB_NAME() AS db_name ,type ,name
            INTO    #sp_get_object
            FROM    sys.objects
            DECLARE @sql NVARCHAR(MAX) 
            SET @sql = ''
            SELECT  @sql = @sql 
						+ REPLACE('
						USE @dbname 
						INSERT INTO #sp_get_object (  db_name,type ,name )   
						SELECT DB_NAME() AS db_name, type ,name 
						FROM    sys.objects 
						where name like ''' + @objectname + ''' ', '@dbname', name)
            FROM    sys.databases
            --WHERE   database_id >= 5 ; -- 非系统数据库
            PRINT @sql
            EXEC sp_executesql  @sql 
            SELECT db_name , type , name  FROM #sp_get_object
            DROP TABLE #sp_get_object     
        END
GO
EXEC sp_MS_marksystemobject 'sp_get_object'    
GO  





                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值