2011-02-01 24 views
5

Trong tuyên bố sau, từ khóa DEFAULT xuất hiện trong đó một giá trị mặc định được xác định cho tham số.Tại sao từ khóa DEFAULT được phép trong CREATE PROCEDURE Lệnh

CREATE PROCEDURE usp_Test 
    @sp_param1 varchar(20) = DEFAULT 
AS 
    SELECT @sp_param1 AS myTest 
; 

NULL được gán cho @ sp_param1. Nhưng, The default value must be a constant or the NULL keyword.

Tại sao từ khóa DEFAULT được phép trong trường hợp này?

Trả lời

2

Từ khóa DEFAULT là trình giữ chỗ cho thứ gì đó mà bạn muốn cung cấp, nhưng không thực sự là NULL. Thường thấy nhất trong số

exec SProcName 2, DEFAULT 

Mặc dù tham số thứ hai được cung cấp, nhưng nó không thực sự là giá trị, nhưng là hướng dẫn sử dụng giá trị DEFAULT của thông số thứ hai.

Khi được sử dụng trong chính CREATE PROC, nó phân tích cú pháp, nhưng chỉ được coi là NULL.

+0

bạn có biết tại sao CREATE PROC phân tích cú pháp không? Giá trị nào đạt được bằng cách cho phép DEFAULT đặt trong CREATE PROC? – bobs

+0

@bobs - đó là một cú pháp khác để nói, 'cột này là tùy chọn' mà không thực sự cho nó một giá trị NULL rõ ràng. – RichardTheKiwi

+0

Kiểm chứng trong tương lai, có lẽ? nghĩa là cho phép loại mặc định là thứ khác với 'NULL'? Đối với tham số giá trị bảng, mặc định là một bảng trống nhưng sau đó bạn không thể sử dụng từ khóa 'DEFAULT' với tham số giá trị bảng! – onedaywhen

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