⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 14.2.1 搜索对象所在的位置.sql

📁 sqlserver 数据库编程的绝好脚本
💻 SQL
字号:
CREATE PROC sp_FindObject
@objectname sysname,           --要查找的对象名
@whereand  nvarchar(2000)=N'', --数据库的过滤条件
@operator   nchar(2)=N'='      --查找对象的运算符
AS
SET NOCOUNT ON
--保存搜索结果的临时表
CREATE TABLE #(DatabaseName sysname,ObjectName sysname,Type sysname)

--定义 sp_MSforeach_worker 检索数据使用的游标
IF @whereand IS NULL SET @whereand=''
EXEC('
	DECLARE hCForEach CURSOR GLOBAL
	FOR
	SELECT name FROM master.dbo.sysdatabases
	WHERE HAS_DBACCESS(name)=1 '+@whereand)
DECLARE @sql nvarchar(4000)
SET @sql=N'INSERT # SELECT N''?'',name,Type=CASE xtype
			WHEN N''C'' THEN N''CHECK约束''
			WHEN N''TF'' THEN N''表函数''
			WHEN N''D'' THEN N''默认值或DEFAULT约束''
			WHEN N''TR'' THEN N''触发器''
			WHEN N''F'' THEN N''FOREIGN KEY约束''
			WHEN N''U'' THEN N''用户表''
			WHEN N''L'' THEN N''日志''
			WHEN N''V'' THEN N''视图''
			WHEN N''FN'' THEN N''标量函数''
			WHEN N''X'' THEN N''扩展存储过程''
			WHEN N''IF'' THEN N''内嵌表函数''
			WHEN N''R'' THEN N''规则''
			WHEN N''P'' THEN N''存储过程''
			WHEN N''PK'' THEN N''PRIMARY KEY 约束''
			WHEN N''RF'' THEN N''复制筛选存储过程''
			WHEN N''UQ'' THEN N''UNIQUE约束''
			WHEN N''S'' THEN N''系统表''
			ELSE N''未知'' END
		FROM [?].dbo.sysobjects
		WHERE name '
	+CASE 
		WHEN @operator IN('=','>','>=','!>','<','<=','!<','<>','!=')
		THEN @operator+QUOTENAME(@objectname,'''')
		WHEN @operator='IN'
		THEN @operator+N' IN('+QUOTENAME(@objectname,'''')+')'
		WHEN @operator IN('LIKE','%')
		THEN ' LIKE '+QUOTENAME(@objectname,'''')
		ELSE '='+QUOTENAME(@objectname,'''')
	END
EXEC sp_MSforeach_worker @command1=@sql
SELECT * FROM #

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -