Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

T-SQL:Tidak dapat meneruskan string gabungan sebagai argumen ke prosedur tersimpan

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah protokol komunikasi SQL Server

  2. Kode blok SQL IF menyebabkan kesalahan meskipun seharusnya tidak dijalankan

  3. Bagaimana cara mengambil cadangan basis data ke PC lain di Sql Server 2008?

  4. Sql biner ke c# - Cara mendapatkan biner SQL yang setara dengan biner di c#

  5. Bagaimana saya bisa memantau pernyataan sql yang dieksekusi pada SQL Server 2005