- sqlcmd
- osql
- SQL Server Management Studio Core
- Toad for SQL Server
| -- początek -- początek pierwszego skryptu USE [Healthy]; GO -- wykonanie pierwszego skryptu -- początek drugiego skryptu CREATE TABLE dbo.[Hospitals]( [Id] IDENTITY(0, 1) TINYINT NOT NULL , [Name] NVARCHAR(255) NOT NULL); GO -- wykonanie drugiego skryptu -- początek trzeciego skryptu INSERT INTO dbo.[Hospitals]([Name]) VALUES(N'Szpital Bielański'); INSERT INTO dbo.[Hospitals]([Name]) VALUES(N'Centralny Szpital Kliniczny MSWiA'); INSERT INTO dbo.[Hospitals]([Name]) VALUES(N'Instytut Hematologii i Transfuzjologii'); INSERT INTO dbo.[Hospitals]([Name]) VALUES(N'Instytut Kardiologii'); GO -- wykonanie trzeciego skryptu -- koniec |
Polecenie Transact-SQL nie może być w tej samej linii, co GO.
| GO select * from dbo.Hospitals; -- nic nie zwróci (wersja 2000)
GO; SELECT * FROM dbo.Hospitals;
-- Could not find stored procedure 'GO'
-- zwróci dane z polecenia SELECT
SELECT * FROM dbo.Hospitals;GO; -- Incorrect syntax near 'GO'
SELECT * FROM dbo.Hospitals;GO -- Incorrect syntax near 'GO'
|
Ale komentarz może się znajdować za GO
| GO -- komentarz |
Zasięg zmiennych, zdefiniowanych przez użytkownika, jest ograniczony do skryptu, co widać poniżej
DECLARE @i TINYINT;
SET @i = 5;
PRINT @i; -- 5
GO -- wykonanie skryptu
PRINT @i; -- Must declare the variable '@i'
GO
|
Należy również pamiętać, że jeżeli wywołujemy procedurę składowaną nie jako pierwsze polecenie skryptu, lecz następne, musimy dołączyć słowo kluczowe EXECUTE (lub EXEC).
USE [Healthy];
GO
CREATE PROCEDURE [dbo].Greeting
AS
SELECT 'Hello';
GO
Greeting; -- Hello
GO
DECLARE @i TINYINT;
EXEC Greeting; -- Hello
GO
DECLARE @i TINYINT;
Greeting; -- Incorrect syntax near 'Greeting'
GO
|
USE [Healthy];
GO
CREATE TABLE [dbo].[Test](var TINYINT);
GO
INSERT INTO [dbo].[Test](var) VALUES(5);
GO 7 -- wersja 2000 zignoruje 7, od 2005 wykona polecenie INSERT 7 razy
|
W wersji 2000, w większości przypadków, ten problem obejdziemy przy pomocy pętli WHILE
USE [Healthy];
GO
CREATE TABLE [dbo].[Test](var TINYINT);
GO
DECLARE @count TINYINT;
SET @count = 0;
WHILE @count < 7
BEGIN
INSERT INTO [dbo].[Test](var) VALUES(5);
SET @count = @count + 1;
END
GO
|