Jelaskan batch
Batch T-SQL adalah kumpulan satu atau beberapa pernyataan T-SQL yang dikirimkan ke SQL Server oleh klien sebagai satu unit. SQL Server beroperasi pada semua pernyataan dalam batch secara bersamaan saat mengurai, mengoptimalkan, dan menjalankan kode.
Jika Anda adalah penulis laporan yang biasanya menulis kueri menggunakan pernyataan SELECT dan bukan prosedur, penting untuk memahami batasan batch. Batas-batas ini memengaruhi pekerjaan Anda dengan variabel dan parameter dalam prosedur tersimpan dan rutinitas lainnya. Misalnya, variabel harus dideklarasikan dalam batch yang sama di mana variabel tersebut direferensikan. Oleh karena itu, penting untuk mengenali apa yang terkandung dalam batch.
Batch dibatasi oleh aplikasi klien. Bagaimana Anda menandai akhir batch tergantung pada pengaturan klien Anda. Untuk klien Microsoft termasuk SQL Server Management Studio (SSMS) dan SQLCMD kata kuncinya adalah GO.
Dalam contoh ini, ada dua batch berbeda yang masing-masing dihentikan dengan GO pernyataan:
CREATE NEW <view_name>
AS ...
GO
CREATE PROCEDURE <procedure_name>
AS ...
GO
GO terminator batch bukan kata kunci T-SQL, tetapi merupakan kata kunci yang dikenali oleh SSMS untuk menunjukkan akhir batch.
Ingatlah dua pertimbangan penting saat Anda bekerja dengan batch T-SQL:
- Batch adalah batas untuk cakupan variabel, yang berarti variabel yang ditentukan dalam satu batch hanya dapat dirujuk oleh kode lain dalam batch yang sama
- Beberapa pernyataan, biasanya pernyataan definisi data seperti
CREATE VIEW, ,CREATE FUNCTIONdanCREATE PROCEDUREtidak dapat dikombinasikan dengan yang lain dalam batch yang sama.
Bekerja dengan kelompok
Batch adalah kumpulan pernyataan T-SQL yang dikirimkan ke SQL Server untuk penguraian dan eksekusi. Memahami bagaimana batch diurai berguna dalam mengidentifikasi pesan kesalahan dan perilaku. Saat batch dikirimkan oleh klien, seperti ketika Anda menekan tombol Eksekusi di SQL Server Management Studio, batch tersebut diurai untuk mencari kesalahan sintaks oleh mesin SQL Server. Setiap kesalahan yang ditemukan menyebabkan seluruh batch ditolak; tidak ada eksekusi sebagian pernyataan dalam batch.
Jika batch melewati pemeriksaan sintaks, maka SQL Server menjalankan langkah lain, menyelesaikan nama objek, memeriksa izin, dan mengoptimalkan kode untuk eksekusi. Setelah proses ini selesai dan eksekusi dimulai, pernyataan berhasil atau gagal satu per satu. Ini adalah kontras penting untuk pemeriksaan sintaksis. Ketika kesalahan runtime terjadi pada satu baris, baris berikutnya masih dapat dijalankan, kecuali Anda menambahkan penanganan kesalahan ke kode.
Misalnya, batch berikut berisi kesalahan sintaks:
INSERT INTO dbo.t1 VALUE(1,2,N'abc');
INSERT INTO dbo.t1 VALUES(2,3,N'def');
GO
Ini memberikan pesan kesalahan ini:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'VALUE'.
Kesalahan terjadi di baris 1, tetapi seluruh batch ditolak, dan eksekusi tidak berlanjut dengan baris 2. Bahkan jika setiap INSERT pernyataan dibalik dan kesalahan sintaks terjadi di baris kedua, perintah di baris pertama tidak akan dijalankan karena seluruh batch akan ditolak.
Sebaliknya, batch yang dikoreksi ini tidak berisi kesalahan:
INSERT INTO dbo.t1 VALUES(1,2,N'abc');
INSERT INTO dbo.t1 VALUES(2,3,N'def');
GO
Contoh-contoh sebelumnya menggunakan INSERT pernyataan bukan SELECT karena pernyataan modifikasi lebih umum dikelompokkan dalam bentuk kelompok.