The GO command can have a parameter?

Comments 0

Share to social media

I have mixed feelings about the GO command. It is not a T-SQL statement, it is just something that Management Studio and the other SQL Server tools understand as a batch separator command. Indeed, you can change it to whatever you wish in Management Studio under Tools->Options->Query Execution->SQL Server->General->Batch separator.
So you can write queries like

SELECT * FROM sys.objects
foo
SELECT * FROM sysobjects
foo

Of course I’m still struggling to find a reason why someone would change the GO command.

One thing I’ve found out recently is its parameter. SQL Server Management Studio seems to accept an integer after the GO command, and this will start an execution loop. For example if you write

PRINT ‘Hello word’
GO 5

The result will be:

Beginning execution loop
Hello word
Hello word
Hello word
Hello word
Hello word
Batch execution completed 5 times.

This is perfect for lazy moments when I want to populate a test table with some default values like:

CREATE TABLE foo
    ( a INT PRIMARY KEY IDENTITY
    , b INT DEFAULT 1
    )
GO

I usually write something like:
INSERT TOP (10) INTO foo (b) SELECT 1 FROM sys.objects

but with the parameter to the GO command the above can be achieved with even less typing:

INSERT INTO foo DEFAULT VALUES
GO 10

The above will also insert 10 rows 🙂
Do let me know if you find a more interesting use for this parameter.

    Andras

Load comments

About the author

András Belokosztolszki

See Profile

András Belokosztolszki is a software architect at Red Gate Software Ltd. He is a frequent speaker at many UK user groups and events (VBUG, NxtGen, Developer’s Group, SQLBits). He is primarily interested in database internals and database change management. At Red Gate he has designed and led the development of many database tools that compare database schemata and enable source control for databases (SQL Compare versions 4 to 7), refactor databases (SQL Refactor) and show the history of databases by analyzing the transaction log (SQL Log Rescue). András has a PhD from Cambridge and an MSc and BSc from ELTE, Hungary. He is also a MCSD and MCPD Enterprise. See my blogs on simple-talk.

András Belokosztolszki's contributions