当前位置: 首页 > news >正文

自动在多个DB上执行同一条sql语句 ( 存储过程版 )

ALTER PROC QueryMultiDB @dbs VARCHAR(2000),@sql VARCHAR(5000) AS DECLARE @dbName VARCHAR(15) DECLARE @idx INT DECLARE @tempSql VARCHAR(5000) SET @tempSql=@sql --判断sql语句是否有dbo, 如果没有则提示并返回. 这个判断也不够精确,靠自己输入把握了. IF(CHARINDEX(' dbo.',@sql)<=0) BEGIN RAISERROR( 'sql语句中的所有表名前必须加上dbo., 例如: select * from dbo.tableName',16,1) RETURN END WHILE (LEN(@dbs) > 0) BEGIN SET @idx = CHARINDEX(',', @dbs) IF (@idx > 0) BEGIN SET @dbName = SUBSTRING(@dbs, 0, @idx) SET @dbs = SUBSTRING(@dbs, @idx + 1, LEN(@dbs) -@idx) END ELSE SET @dbName = @dbs SET @dbName=LTRIM(RTRIM(@dbName)) PRINT '----' + @dbName + '----' SET @sql=REPLACE(@tempSql,' dbo.',' '+@dbName+'.dbo.') --注: 某些地方需要显示dbName, 传入的sql语句应类似: 'SELECT ''@dbName'' as webid,* FROM dbo.table' SET @sql=REPLACE(@sql,'@dbName',@dbName) --print (@sql) --用于调试, 判断动态生成的sql语句是否正确 EXEC(@sql) --执行动态sql IF (@idx <= 0) BREAK END --执行 EXEC QueryMultiDB 'db01,db02' ,'SELECT top 5 ''@dbName'' as webid,* FROM dbo.tableName'

最佳搭档:

枚举所有DB的名称, 以逗号分隔输出

相关文章:

  • 判断是否是子串
  • 程序员编程艺术第十一章:最长公共子序列(LCS)问题
  • Python之时间表示
  • iOS中UIWebview中网页宽度自适应的问题
  • 重启开源,分享无限--微软面试187题精选
  • 推荐给非互联网主体的用户
  • string.format的使用与及转义
  • Java Socket网络编程
  • 浅谈返回值类型: json与html
  • SVN的安装与简单使用
  • SQL Server直接查询: 其它的连接/Excel
  • javaweb part6---jstl以及el表达式
  • webuploader配置
  • SQL Server中的convert来转换时间
  • 日期工具
  • [iOS]Core Data浅析一 -- 启用Core Data
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • MySQL用户中的%到底包不包括localhost?
  • STAR法则
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 前端技术周刊 2019-02-11 Serverless
  • 嵌入式文件系统
  • 如何使用 JavaScript 解析 URL
  • 少走弯路,给Java 1~5 年程序员的建议
  • 微信小程序设置上一页数据
  • 消息队列系列二(IOT中消息队列的应用)
  • 赢得Docker挑战最佳实践
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (C++17) optional的使用
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (四)库存超卖案例实战——优化redis分布式锁
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)Linux+Windows下安装ffmpeg
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)为C# Windows服务添加安装程序
  • .gitignore文件_Git:.gitignore
  • .Net 路由处理厉害了
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .net实现客户区延伸至至非客户区
  • .NET中两种OCR方式对比
  • .net中生成excel后调整宽度
  • // an array of int
  • [20160902]rm -rf的惨案.txt
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [C#] 我的log4net使用手册
  • [FTP]pureftp部署和优化
  • [Hadoop in China 2011] 蒋建平:探秘基于Hadoop的华为共有云