Pernyataan EXECUTE hanya memiliki tata bahasa yang berbeda dari pernyataan lain seperti SELECT dan SET. Misalnya, amati bagian sintaks di bagian atas dua halaman berikut.
JALANKAN pernyataan:http://msdn.microsoft.com/en-us/ library/ms188332.aspx
Pernyataan SET:http://msdn.microsoft.com/en-us/ library/ms189484.aspx
Sintaks untuk EXECUTE hanya menerima nilai
Sedangkan sintaks untuk SET menerima ekspresi
Nilai pada dasarnya hanya konstanta kode keras, tetapi ekspresi akan dievaluasi. Ini seperti memiliki varchar 'SELECT 1 + 1'. Itu hanya nilai varchar sekarang. Namun, Anda dapat mengevaluasi string seperti ini:
EXEC('SELECT 1 + 1')
Saya kira semua yang saya tunjukkan adalah bahwa perintah EXEC tidak mengizinkan ekspresi menurut definisi, yang tampaknya sudah Anda ketahui. Entah apa maksud dari para developer T-SQL dimana saat mereka membuatnya seperti itu. Saya kira tata bahasanya akan lepas kendali jika Anda diizinkan untuk membuang subkueri di dalam subkueri dalam daftar parameter prosedur tersimpan.
Ekspresi T-SQL:http://msdn.microsoft.com/en- us/library/ms190286.aspx