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

Sử dụng kết quả của một biểu thức (ví dụ:lệnh gọi hàm) trong danh sách tham số thủ tục được lưu trữ?

Bạn cần sử dụng một biến trung gian. SQL Server không hỗ trợ loại hoạt động này trong chính danh sách tham số mặc dù nó đã nằm trong danh sách CẦN LÀM trong một vài năm! (Xem Mục Kết nối:Sử dụng các hàm vô hướng làm tham số thủ tục được lưu trữ)

Ngữ pháp cho EXEC

[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value 
                           | @variable [ OUTPUT ] 
                           | [ DEFAULT ] 
                           }
        ]
      [ ,...n ]
      [ WITH <execute_option> [ ,...n ] ]
    }
[;]

Tài liệu hiện không rõ ràng về định dạng được chấp nhận cho giá trị value nhưng nó dường như chỉ là các biểu thức "đơn giản" như giá trị chữ hoặc @@ các chức năng hệ thống có tiền tố (chẳng hạn như @@IDENTITY ). Các chức năng hệ thống khác như SCOPE_IDENTITY() không được phép (ngay cả những thứ không yêu cầu dấu ngoặc đơn như CURRENT_TIMESTAMP không được phép).

Vì vậy, trong lúc này bạn cần sử dụng cú pháp như dưới đây

DECLARE @pID INT;

SET @pID = 1;

/*If 2008+ for previous versions this needs to be two separate statements*/
DECLARE @string VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11))

EXEC WriteLog
  'Component',
  'Source',
  @string 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khôi phục sao lưu cơ sở dữ liệu SQL Server trên phiên bản thấp hơn

  2. Trong SQL Server, làm cách nào tôi có thể tìm thấy ở mọi nơi một cột được tham chiếu?

  3. Cách xuất dữ liệu máy chủ SQL từ bảng sang tệp CSV

  4. 4 cách liệt kê tất cả các dạng xem trong cơ sở dữ liệu máy chủ SQL

  5. Sử dụng FILE_IDEX () để trả lại ID của tệp cơ sở dữ liệu trong SQL Server