2010-09-30 29 views
7

Phía trên cuộc gọi đến thủ tục được lưu trữ này là một cuộc gọi khác đến một thủ tục được lưu trữ khác. Thủ tục đầu tiên sẽ chỉ định một cái gì đó cho @NewIdentifier nếu cần, nếu không tôi cần sử dụng mặc định SaleId.Cuộc gọi thủ tục đã lưu với ISNULL trong nhiệm vụ. Cú pháp không hợp lệ?

exec myStoredProc @SaleId = ISNULL(@NewIdentifier, @SaleId) 

Nó hoạt động nếu tôi làm theo cách này

declare @Id int 
set @Id = ISNULL(@NewIdentifier, @SaleId) 
exec myStoredProc @SaleId = @Id 

Có thể sử dụng ISNULL trong việc chuyển nhượng một tham số thủ tục lưu trữ? Tôi không chắc chắn những gì không hợp lệ về cú pháp này.

Trả lời

8

Tham số phải là một hằng số hoặc một biến. Đây không phải là một biểu thức.

+0

Ah, tôi hiểu rồi. – Brandon

0

Có thể rằng các nhà điều hành '=' có độ ưu tiên thấp hơn '('? Nếu vậy, nó sẽ được phân tích như myStoredProc exec (@SaleId = ISNULL) (@NewIdentifier, @SaleId), đó sẽ là lỗi cú pháp

Các vấn đề liên quan