2011-02-01 11 views
5

次の文では、DEFAULTキーワードが表示され、パラメータにデフォルト値が定義されています。CREATE PROCEDUREコマンドでDEFAULTキーワードが許可されるのはなぜですか

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

@ sp_param1にNULLが割り当てられています。しかし、The default value must be a constant or the NULL keyword.

なぜこの状況でDEFAULTキーワードが許可されていますか?

答えて

2

DEFAULTキーワードは、あなたが提供したいもののプレースホルダですが、実際にはNULLではありません。最も一般的に第二のparamが供給されていても

exec SProcName 2, DEFAULT 

で見られ、それは実際には値ではなく、第二のparamのデフォルト値を使用する命令です。

CREATE PROC自体で使用すると、解析されますが、単純にNULLとして扱われます。

+0

CREATE PROCが解析する理由を知っていますか? DEFAULTをCREATE PROCに配置することで、どのような価値が得られますか? – bobs

+0

@bobs - 実際に明示的なNULL値を与えずに 'この列はオプションです'と言う別の構文です。 – RichardTheKiwi

+0

今後の校正は、おそらく?すなわち、デフォルトが「NULL」以外のものである型を許可するか? table-valueパラメータの場合、デフォルトは空のテーブルですが、再度 'DEFAULT'キーワードをtable-valueパラメータで使用することはできません! – onedaywhen

関連する問題