Sintaks dasar pernyataan SQL dinamis
1: Pernyataan SQL biasa dapat dieksekusi dengan Exec
misalnya: Pilih * dari nama tabel
Exec('pilih * dari nama tabel')
Exec sp_executesql N'select * from tableName' -- Harap dicatat bahwa N harus ditambahkan sebelum string
2: Ketika nama bidang, nama tabel, nama database, dll. digunakan sebagai variabel, SQL dinamis harus digunakan
misalnya:
nyatakan @fname varchar(20)
setel @fname = 'Nama File'
Pilih @fname dari tableName -- Error, tidak ada kesalahan yang akan muncul, tetapi hasilnya adalah nilai FiledName yang tetap, yang bukan sesuai keinginan Anda.
Exec('select ' + @fname + ' from tableName') -- Harap dicatat bahwa ada spasi di sekitar tanda kutip tunggal sebelum dan sesudah tanda plus.
Tentu saja, Anda juga dapat mengubah string menjadi bentuk variabel
nyatakan @fname varchar(20)
set @fname = 'FiledName' --Tetapkan nama bidang
nyatakan @s varchar(1000)
set @s = 'pilih ' + @fname + ' dari nama tabel'
Exec(@s) -- sukses
exec sp_executesql @s -- kalimat ini akan melaporkan kesalahan
deklarasikan @s Nvarchar(1000) -- perhatikan bahwa ini diubah menjadi nvarchar(1000)
set @s = 'pilih ' + @fname + ' dari nama tabel'
Exec(@s) -- sukses
exec sp_executesql @s -- Kalimat ini benar
3. Parameter keluaran
nyatakan @num int,
@sqls nvarchar(4000)
set @sqls='pilih hitungan(*) dari namatabel'
eksekutif(@sqls)
--Bagaimana cara memasukkan hasil eksekusi exec ke dalam variabel?
nyatakan @num int,
@sqls nvarchar(4000)
atur @sqls='pilih @a=count(*) dari tableName '
exec sp_executesql @sqls,N'@a int keluaran',@num keluaran
pilih @num
Jika Anda ingin menggunakan tanda kutip tunggal '' dalam string pernyataan SQL, Anda dapat menggunakan ''''