Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

T-SQL:Không thể truyền chuỗi nối làm đối số cho thủ tục được lưu trữ

Câu lệnh EXECUTE chỉ đơn giản là có một ngữ pháp khác sau đó các câu lệnh khác như SELECT và SET. Ví dụ:hãy quan sát phần cú pháp ở đầu hai trang sau.

EXECUTE tuyên bố: http://msdn.microsoft.com/en-us/ thư viện / ms188332.aspx

Câu lệnh SET: http://msdn.microsoft.com/en-us/ thư viện / ms189484.aspx

Cú pháp EXECUTE chỉ chấp nhận một giá trị

Trong khi cú pháp cho SET chấp nhận một biểu thức

Một giá trị về cơ bản chỉ là một hằng số được mã hóa cứng, nhưng một biểu thức sẽ được đánh giá. Nó giống như có varchar 'CHỌN 1 + 1'. Nó chỉ là một giá trị varchar ngay bây giờ. Tuy nhiên, bạn có thể đánh giá chuỗi như thế này:

EXEC('SELECT 1 + 1')

Tôi cho rằng tất cả những gì tôi đang chỉ ra là lệnh EXEC không cho phép các biểu thức theo định nghĩa, mà bạn dường như đã phát hiện ra rồi. Tôi không biết ý định của các nhà phát triển T-SQL là gì khi họ làm theo cách đó. Tôi cho rằng ngữ pháp sẽ trở nên khó hiểu nếu bạn được phép ném các truy vấn con vào trong các truy vấn con trong danh sách tham số của một thủ tục được lưu trữ.

Biểu thức 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. Làm cách nào để tính số ngày chủ nhật sáu tuần bằng cách sử dụng Weekno trong SQL Server 2008?

  2. Chuyển đổi ‘datetime’ thành ‘smalldatetime’ trong SQL Server (Ví dụ T-SQL)

  3. API SSIS:Làm cách nào để biết Giao diện nào để truyền một __COMObject tới?

  4. Trình kích hoạt SQL có thể gọi một dịch vụ web không?

  5. hiển thị các danh mục phụ bằng cách sử dụng SQL