分享: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) = '' ,  
      @typeInput varchar(8) = 'U',
	  @is_current_db CHAR(1) = 'N'  --是否当前数据库  
    )  
AS   
--  作者:陈恩辉-弘恩     
    SET NOCOUNT ON ;    
    IF @is_current_db = 'Y'     
        SELECT  DB_NAME() AS db_name ,  
                type ,  
                name  
        FROM    sys.objects  
        WHERE   name LIKE @objectname + '%' and type like @typeInput +'%'
    ELSE   
        BEGIN     
            SELECT TOP 0  
                    DB_NAME() AS db_name ,  
                    type ,  
                    name  
            INTO    #sp_get_object  
            FROM    sys.objects    
            DECLARE @sql NVARCHAR(MAX) ,@sql_exec NVARCHAR(1000) ,@new_line CHAR(2)   
            SELECT  @sql = '' ,@new_line = CHAR(13) + CHAR(10),  
             @sql_exec =  @new_line+ 'USE [@dbname] ' +@new_line    
                        +'INSERT INTO #sp_get_object ( db_name,type ,name ) ' +@new_line      
                        +'SELECT DB_NAME() AS db_name, type ,name ' + @new_line  
                        +'FROM    sys.objects ' +@new_line  
						+' where type like ''' +  @typeInput +'%'''
                        +' and   name like '''     
            SELECT  @sql = @sql + REPLACE( @sql_exec + @objectname + '%'' ', '@dbname',name)  
            FROM    sys.databases     
            PRINT @sql    
            EXEC sp_executesql @sql     
            SELECT  db_name ,  
                    type ,  
                    name  ,
					case when type = 'U' then 'select top 10 * from '+db_name+'..['+name+']' else '' end  as _sql
            FROM    #sp_get_object    
            DROP TABLE #sp_get_object         
        END    
GO    
EXEC sp_MS_marksystemobject 'sp_get_object'    
GO  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值