23 Juni 2009

Perintah GO pada SQL Server

Perintah GO hanya dikenali pada DBMS SQL Server, digunakan untuk mengakhiri perintah-perintah T-SQL (Transact SQL) pada SQL Server. Perintah GO ini bukan merupakan perintah T-SQL. Pada SQL Server kumpulan perintah dikirim ke instance SQL Server yang dinamakan “batch”. Dengan perintah GO, tool yang digunakan pada SQL Server, seperti Query Analyzer pada SQL Server 2000 atau SQL Server Management Studio pada SQL Server 2005/2008, akan mengirim sinyal ke instance SQL Server untuk mengakhiri batch yang bersangkutan. Suatu batch terdiri atas semua perintah setelah perintah GO terakhir, atau sejak awal skrip jika tidak ada perintah GO sebelumnya.
USE master;
GO
DECLARE @i int;
SET @i = 10;
SELECT @i;
GO

Contoh skrip diatas terdiri dari 2 batch, karena terdapat 2 perintah GO. Dengan skrip tersebut sebuah variabel dengan tipe integer di deklarasikan dan diisi dengan nilai 10 yang kemudian ditampilkan hasilnya. Variabel yang di deklarasikan tersebut hanya berlaku pada batch tempat variabel tersebut di deklarasikan dan tidak berlaku setelah perintah GO dijalankan.
USE master;
GO
DECLARE @i int;
SET @i = 10;
SELECT @i;
GO
SELECT @i; -- akan menampilkan pesan kesalahan

Jika kita membuat procedure, function atau trigger, maka perintah untuk membuat obyek tersebut harus merupakan perintah pertama pada suatu batch. Contoh berikut akan menampilkan pesan kesalahan.
USE master;
CREATE PROCEDURE proc1 AS SELECT 1;

Supaya skrip tersebut bisa berjalan tanpa adanya pesan kesalahan, kita harus menambahkan perintah GO sebelum perintah untuk membuat procedure.
USE master;
GO
CREATE PROCEDURE proc1 AS SELECT 1;

Pada SQL Server 2008 terdapat fitur baru dimana pada perintah GO terdapat parameter dengan tipe integer (optional) yang dapat diisi dengan nilai integer positif. Parameter ini jika diisi dengan nilai tertentu akan menjalankan batch yang bersangkutan sebanyak nilai dari parameter tersebut ditentukan. Contoh berikut akan membuat tabel “tbl” dan diisi dengan tanggal dan waktu sekarang sebanyak 10 kali.
CREATE TABLE tbl (tgl datetime)
GO
INSERT INTO tbl VALUES (GETDATE())
GO 10
SELECT * FROM tbl

Catatan: Perintah lain tidak bisa menempati baris yang sama dengan perintah GO. Perintah GO juga tidak memerlukan tanda ; sebagai akhir perintah. Tapi baris komentar dapat menyertai perintah GO. Contoh:
GO [ok]
GO; [error]
GO -- akhir dari batch [ok]

1 komentar:

  1. mau naya ni gun lok eror delphi eror saat run time spt ini gimana ya cara atasinya
    "Project.exe raised exception class EOleException with message' An unkown error has accured',,,,,,,,,gimana gan tolongin

    BalasHapus