Saya kadang-kadang memiliki skrip SQL yang memiliki satu atau lebih string super-panjang (kadang-kadang bahkan bodoh-panjang). Biasanya ini adalah VARBINARY
literal / konstanta yang mewakili file / Majelis, tetapi kadang-kadang mereka adalah teks.
Masalah utama dengan string yang sangat panjang adalah bahwa beberapa editor teks tidak menangani semuanya dengan baik. Misalnya, saya memiliki VARBINARY
literal yang saya gunakan dalam CREATE ASSEMBLY [AssemblyName] FROM 0x....
pernyataan, dan Majelis itu sendiri berukuran lebih dari 1 MB, yang setara dengan lebih dari 2 juta karakter dalam file teks karena setiap byte membutuhkan dua karakter untuk diwakili dalam notasi hex (misalnya 0x1F
= a 1
dan an F
). SQL Server Management Studio (SSMS) tidak menangani ini dengan baik dan hang selama beberapa detik ketika saya mencoba untuk menggulir ke baris itu. Dan pada kenyataannya, beberapa versi (tidak yakin apakah ini masih terjadi) bahkan akan menampilkan peringatan tentang garis panjang ketika membuka skrip yang memiliki setidaknya satu baris pada panjang tertentu.
Masalah kedua adalah bahwa hal itu mempersulit pemformatan ketika menggunakan editor tanpa mengaktifkan kata-bungkus, atau memposting secara online. Masalahnya di sini adalah bahwa slider untuk scroll bar horisontal sangat sempit dan memindahkannya walaupun hanya sedikit biasanya menggulirkan teks yang tidak terlalu panjang ke luar dari tampilan.
Sekarang, T-SQL tidak menghentikan perintah dengan baris baru atau bahkan semi-titik dua (meskipun semi-titik dua lebih disukai / direkomendasikan, dimulai dengan SQL Server 2005). Jadi sejak SQL Server tahu bagaimana mengurai setiap pernyataan seperti yang ia tahu ketika itu berakhir, tampaknya seperti membelah garis panjang di beberapa baris, dipisahkan oleh sebuah newline/ carriage-return+ line-feed, tampaknya tidak masuk akal. Tapi ini tidak berhasil dalam kedua kasus itu.
PRINT 'Line1
Line2';
kembali (di tab "Pesan"):
Line1
Line2
Dan itu cukup masuk akal karena baris baru dalam literal / konstan. Tetapi melakukan ini VARBINARY
juga tidak berhasil.
PRINT 0x1234
5678;
memberi saya kesalahan.
sumber