将脚本字符串按GO分割再执行
来源:互联网 发布:ios软件开发工具 编辑:程序博客网 时间:2024/06/04 01:12
我们平常得到的脚本往往含有GO, 这是无法用动态语句直接执行的, 但有时GO不能直接去掉(比如create view之类), 如何处理?
1. 需要按行分割表值函数:Fun_SplitByLine
2. 增加一个存储即可:
IF OBJECT_ID('dbo.Proc_DBA_ExecBySplitGo') IS NOT NULLDROP PROC dbo.Proc_DBA_ExecBySplitGoGO-- =============================================-- Author:yenange-- Create date: 2017-12-19-- Description:将一个脚本字符串按GO分割后执行-- =============================================CREATE PROCEDURE dbo.Proc_DBA_ExecBySplitGo@sql NVARCHAR(MAX)='select 1 as rgoselect 2 as rgo 'ASBEGINSET NOCOUNT ON;IF ISNULL(@sql,'')=''BEGINRAISERROR ('SQL脚本字符串为空!',16,1)RETURN;END--1. 将语句分割DECLARE @t TABLE(rowNum INT,line NVARCHAR(MAX))INSERT INTO @t(rowNum,line)SELECT rowNum,line FROM dbo.Fun_SplitByLine(@sql)DECLARE @tempSql NVARCHAR(MAX),@i INT,@iMax INT,@line NVARCHAR(MAX),@times INTSELECT @i=1,@iMax=MAX(rowNum),@tempSql='',@times=1 FROM @tWHILE @i<=@iMaxBEGINSELECT @line=line FROM @t WHERE rowNum=@iIF ltrim(rtrim(@line))='GO' OR @i=@iMaxBEGINPRINT ''PRINT '----'+CAST(@times AS VARCHAR(50))+'. 分割执行'PRINT @tempSqlEXEC (@tempSql)SET @tempSql=''SET @times=@times+1ENDELSEBEGINSET @tempSql=CASE WHEN @tempSql='' THEN @line ELSE @tempSql+''+@lineENDENDSET @i=@i+1ENDENDGO
阅读全文
0 0
- 将脚本字符串按GO分割再执行
- js脚本分割字符串
- Java将字符串按指定长度分割
- 将字符串用“|”分割。
- 将字符串分割
- [Shell脚本]字符串分割符
- T_sql将字符串分割函数
- Java 按规律将字符串分割为do…
- 如何将字符串按需要分割成需要的列表
- 将字符串分割成若干个子字符串
- shell 脚本字符串 分割或截取
- Shell脚本实现简单分割字符串
- shell 将字符串分割成数组
- mssql 将字符串分割为Table (splitToTable)
- shell 将字符串分割成数组
- oracle 将一个字符串分割成多行
- js将字符串按照逗号分割
- 将指定字符串分割成字符数组
- dubbo的简单学习及原理介绍
- Callable、Future和FutureTask原理解析
- 1.1java基础部分一:java的基本数据类型
- 查询Oracle最近插入语句
- Python3文件操作
- 将脚本字符串按GO分割再执行
- vue + ElementUI 表格筛选框的高度设置,超出一定高度,显示滚动条
- JAVA,OpenLDAP使用心得
- EDA课设-基于VHDL的简易出租车计价器设计
- 分布式一致性算法Paxos,Zookeeper的ZAB协议,Raft算法
- linux慕课学习总结
- SpringMVC介绍之Validation
- Kotlin之数据类解构申明
- Unity3D _脚本之间通信