概述
作为DBA,在日常运维过程中,有时需要一遍又一遍地执行相同的命令或一组命令。这可能是插入或更新测试数据,也可能是在您的服务器上增加负载以进行性能测试。一种方法是设置一个 while 循环并一遍又一遍地执行代码,但还有另一种方法可以使用 GO 命令来完成。
解决方案
GO 关键字告诉 SQL Server 将前面的代码作为一批执行。在 SQL Server 中,您可以在 GO 命令后添加一个数字来告诉 SQL Server 执行批处理的次数。下面让我们看几个例子。
使用 GO 执行一个 SQL 批处理 X 次
假设您要创建一个测试表并加载 1000 条记录。您可以发出以下命令,它将运行相同的 INSERT 命令 1000 次:
CREATE TABLE dbo.TEST (ID INT IDENTITY (1,1), ROWID uniqueidentifier)
GO
INSERT INTO dbo.TEST (ROWID) VALUES (NEWID())
GO 1000
将 GO 与 SQL Server 批处理一起使用的另一个示例
这是另一个执行两个 INSERT 语句 100 次的示例。同时您可以向要运行的批处理添加更多语句(在本例中为两个插入),在 GO 命令之后指定 X 次。
CREATE TABLE dbo.TEST (ID INT IDENTITY (1,1), ROWID uniqueidentifier)
CREATE TABLE dbo.TEST2 (ID INT IDENTITY (1,1), ROWID uniqueidentifier)
GO
INSERT INTO dbo.TEST (ROWID) VALUES (NEWID())
INSERT INTO dbo.TEST2 (ROWID) VALUES (NEWID())
GO 100
使用循环一遍又一遍地运行批处理
要对循环执行类似的操作,您需要编写如下代码。这也没什么大不了,但写 GO 100 对我来说似乎更容易一些。
CREATE TABLE dbo.TEST ( ID INT IDENTITY ( 1 , 1 ), ROWID uniqueidentifier )标签:INSERT,dbo,批处理,INT,ROWID,GO,TSQL From: https://www.cnblogs.com/lkj371/p/16877317.html
CREATE TABLE dbo.TEST2 ( ID INT IDENTITY ( 1 , 1 ), ROWID uniqueidentifier )
GO
DECLARE @counter INT
SET @counter = 0
WHILE @counter < 100
BEGIN
INSERT INTO dbo.TEST ( ROWID )值(NEWID ())
插入dbo.TEST2 ( ROWID )值( NEWID ())
SET @counter = @counter + 1
END