Saya selalu bingung dengan kapan saya harus menggunakan kata kunci GO setelah perintah dan apakah titik koma diperlukan di akhir perintah. Apa perbedaannya dan mengapa / kapan saya harus menggunakannya?
Ketika saya menjalankan Generate-script di SQL Server Management Studio, tampaknya menggunakan GO di semua tempat, tetapi bukan titik koma.
sql
sql-server
Neraka
sumber
sumber
Jawaban:
GO
hanya berhubungan dengan SSMS - ini bukan Transact SQL sebenarnya, ini hanya memberi tahu SSMS untuk mengirim pernyataan SQL di antara masingGO
-masing batch secara berurutan.Itu
;
adalah pemisah pernyataan SQL, tetapi sebagian besar mesin dapat menafsirkan di mana pernyataan Anda dipecah.Pengecualian utama, dan tempat di mana yang
;
paling sering digunakan adalah sebelum Pernyataan Ekspresi Tabel Umum.sumber
GO
bukan Bagian T-SQL sementara;
adalahMERGE
pernyataan harus diakhiri dengan titik koma.;
tidak berlaku lagi, TIDAK menggunakannya sudah usang, yaitu akan menjadi wajib menurut sumbernya.Alasan mengapa Anda melihat begitu banyak GO dalam skrip DDL yang Dihasilkan adalah karena aturan berikut tentang batch.
Salah satu kasus penggunaan untuk Generated DDL adalah untuk menghasilkan banyak objek dalam satu file. Karena itu, generator DDL harus dapat menghasilkan batch. Seperti yang dikatakan orang lain, pernyataan GO mengakhiri batch.
sumber
PERGILAH
Go adalah pemisah batch. Ini berarti bahwa semua yang ada di batch itu bersifat lokal ke batch tersebut.
Deklarasi Variabel, Variabel Tabel, dll. Tidak melewati
GO
pernyataan.Tabel #Temp bersifat lokal ke suatu koneksi, sehingga mencakup seluruh pernyataan GO.
Titik koma
Titik koma adalah terminator pernyataan. Ini murni digunakan untuk mengidentifikasi bahwa pernyataan tertentu telah berakhir.
Dalam kebanyakan kasus, sintaks pernyataan itu sendiri sudah cukup untuk menentukan akhir pernyataan.
Namun CTE, menuntut bahwa WITH adalah pernyataan pertama sehingga Anda memerlukan titik koma sebelum WITH.
sumber
MERGE
pernyataan harus diakhiri dengan titik koma.Anda harus menggunakan titik koma untuk menghentikan setiap pernyataan SQL. Ini didefinisikan dalam Standar SQL,
Tentu, lebih sering daripada tidak SQL Server memungkinkan Anda untuk menghilangkan terminator pernyataan tetapi mengapa menjadi kebiasaan buruk?
Seperti yang ditunjukkan orang lain, pernyataan yang mendahului ekspresi tabel umum (CTE) harus diakhiri dengan titik koma. Akibatnya, dari orang-orang yang belum sepenuhnya menggunakan terminator titik koma, kami melihat ini:
yang menurut saya terlihat sangat aneh. Saya kira masuk akal di forum online ketika Anda tidak dapat mengetahui kualitas kode yang akan ditempelkan.
Selain itu,
MERGE
pernyataan harus diakhiri dengan titik koma. Apakah Anda melihat pola di sini? Ini adalah beberapa tambahan baru untuk TSQL yang mengikuti Standar SQL. Sepertinya tim SQL Server sedang menjalankan mandat penggunaan terminator titik koma.sumber
GO adalah terminator batch, titik koma adalah terminator pernyataan.
Anda akan menggunakan GO jika Anda ingin memiliki beberapa pernyataan create proc dalam 1 skrip karena create proc harus menjadi pernyataan pertama dalam sebuah batch. Jika Anda menggunakan ekspresi tabel umum maka pernyataan sebelumnya harus diakhiri dengan titik koma
sumber
MERGE
pernyataan harus diakhiri dengan titik koma.