欢迎来到Introzo百科
Introzo百科
使用游标实现SQL查询当前服务器所有数据库中的所有表
-->
声明@name varchar(100)
DECLARE My_Cursor CURSOR --定义光标
FOR(从 Master..SysDatabases 中选择名称
where name NOT IN ('master','model','msdb','tempdb') ) --找出需要的集合放入光标
打开我的光标; --打开光标
从 My_Cursor 获取下一个到 @name
当@@FETCH_STATUS = 0
开始 如果存在(从 sysobjects 中选择 1,其中 xtype='u' 且名称如 '%qq%')
从 sysobjects 中选择名称,其中 xtype='u' 且名称如 '%qq%'
从 My_Cursor 获取下一个到 @name
结尾 关闭我的光标
解除分配 My_Cursor
DECLARE My_Cursor CURSOR --定义光标
FOR(从 Master..SysDatabases 中选择名称
where name NOT IN ('master','model','msdb','tempdb') ) --找出需要的集合放入光标
打开我的光标; --打开光标
从 My_Cursor 获取下一个到 @name
当@@FETCH_STATUS = 0
开始 如果存在(从 sysobjects 中选择 1,其中 xtype='u' 且名称如 '%qq%')
从 sysobjects 中选择名称,其中 xtype='u' 且名称如 '%qq%'
从 My_Cursor 获取下一个到 @name
结尾 关闭我的光标
解除分配 My_Cursor
可以将QQ替换成你想要的条件
PS:有问题,修好后还是不行。有人知道吗?
声明@name varchar(100)
声明@sql varchar(100)
DECLARE My_Cursor CURSOR --定义光标
FOR(从 Master..SysDatabases 中选择名称
where name NOT IN ('master','model','msdb','tempdb','ReportServer','ReportServerTempDB') ) --查出需要的集合放置游标中
打开我的光标; --打开游标
从 My_Cursor 获取下一个到 @name
当@@FETCH_STATUS = 0
开始 选择@sql='使用'+@name
EXEC sp_sqlexec @Sql
--从Master..SysDatabases中选择@name
--if 存在(从 sysobjects 中选择 1,其中 xtype='u' )--
select * from sysobjects where xtype='u'-- 名称如 '%sys%'
从 My_Cursor 获取下一个到 @name
结尾 关闭我的光标
解除分配 My_Cursor
声明@sql varchar(100)
DECLARE My_Cursor CURSOR --定义光标
FOR(从 Master..SysDatabases 中选择名称
where name NOT IN ('master','model','msdb','tempdb','ReportServer','ReportServerTempDB') ) --查出需要的集合放置游标中
打开我的光标; --打开游标
从 My_Cursor 获取下一个到 @name
当@@FETCH_STATUS = 0
开始 选择@sql='使用'+@name
EXEC sp_sqlexec @Sql
--从Master..SysDatabases中选择@name
--if 存在(从 sysobjects 中选择 1,其中 xtype='u' )--
select * from sysobjects where xtype='u'-- 名称如 '%sys%'
从 My_Cursor 获取下一个到 @name
结尾 关闭我的光标
解除分配 My_Cursor
声明 @dbname VARCHAR(50);
声明 @i INT =1;
声明 @maxid INT=0;
创建表#temp(
id int 身份(1,1),
数据库名称 varchar(50)
)
声明 @sql VARCHAR(max)='';
插入#temp
(数据库名称)
从 master.sys.SysDatabases 中选择名称,其中名称不在 ('master','model','msdb','tempdb')
从#temp
中选择@maxid=MAX(id) 而@i<@maxid
开始
声明 @db VARCHAR(50)='';
SELECT @db=dbname FROM #temp WHERE id=@i
打印@db
IF @i<>1 和 @i<>@maxid
开始
SET @sql+='UNION ALL'
完
SET @sql+=' SELECT * FROM '+@db+'.INFORMATION_SCHEMA.TABLES '
设置@i+=1;
完
删除表#temp
执行(@sql)
声明 @i INT =1;
声明 @maxid INT=0;
创建表#temp(
id int 身份(1,1),
数据库名称 varchar(50)
)
声明 @sql VARCHAR(max)='';
插入#temp
(数据库名称)
从 master.sys.SysDatabases 中选择名称,其中名称不在 ('master','model','msdb','tempdb')
从#temp
中选择@maxid=MAX(id) 而@i<@maxid
开始
声明 @db VARCHAR(50)='';
SELECT @db=dbname FROM #temp WHERE id=@i
打印@db
IF @i<>1 和 @i<>@maxid
开始
SET @sql+='UNION ALL'
完
SET @sql+=' SELECT * FROM '+@db+'.INFORMATION_SCHEMA.TABLES '
设置@i+=1;
完
删除表#temp
执行(@sql)
经过千辛万苦,找到了方法,正确的方法如下:
sp_MSForEachDB @command1='使用?;
SELECT www.introzo.com AS 表名,www.introzo.com AS 列名,www.introzo.com AS 数据类型, *
FROM sys.[列] AS c
INNER JOIN sys.objects AS o ON c.[object_id]=c.[object_id]
内连接 sys.types AS t ON t.user_type_id=c.user_type_id
WHERE o.[type]=''U'''
FROM sys.[列] AS c
INNER JOIN sys.objects AS o ON c.[object_id]=c.[object_id]
内连接 sys.types AS t ON t.user_type_id=c.user_type_id
WHERE o.[type]=''U'''
-->
相关文章
- 10-05 【学习笔记】IT项目管理-挣值管理(EVM)
- 10-05 学习JUC源码(三)——条件等待队列(源码分析结合
- 10-05 通过拆解一个简单的C程序,分析汇编代码,了解计算机
- 10-05 什么是共享单车黑名单制度?共享单车黑名单制度
- 10-05 如何开启Android手机的便携式热点功能
- 10-05 360n5s发布会直播地址360n5s新品发布会视
- 10-05 【第200期】面试官:您能简单讲一下SpringM
- 10-05 【第411期】Docker连杀15题,你能坚持哪题
- 10-05 【第432期】面试官:您的项目中使用Redis的目
- 10-05 ZEEKR 001 FR高性能车型预热:搭载4电机
- 10-05 我国网民规模达10.79亿,互联网普及率达76.4
- 10-05 《2023年标准地图》正式上线
- 10-05 stm32内存包括哪些类型(stm32内存分为几个
- 10-05 stm32采集+数据处理程序(stm32采集+数据
- 10-05 stm32仿真图的引脚如何连接(stm32仿真器接
- 10-05 Zabbix警告问题
- 10-05 Zabbix集成云预警(瑞祥云)实现电话短信预警
- 10-05 利用企业微信实现预警(shell+python)
- 10-05 高通CEO爆料苹果自研5G芯片明年准备就绪
- 10-05 全球智能手机市场被扰乱:iPhone与Androi
- 最近发表