为什么在CREATE PROCEDURE命令中允许使用DEFAULT关键字

bob*_*obs 5 sql t-sql sql-server

在以下语句中,将显示DEFAULT关键字,其中为参数定义了默认值.

CREATE PROCEDURE usp_Test
    @sp_param1 varchar(20) = DEFAULT
AS
    SELECT @sp_param1 AS myTest
;
Run Code Online (Sandbox Code Playgroud)

NULL被分配给@ sp_param1.但是,默认值必须是常量或NULL关键字.

为什么在这种情况下允许使用DEFAULT关键字?

Ric*_*iwi 2

DEFAULT 关键字是您想要提供的内容的占位符,但实际上甚至不是 NULL。最常见于

exec SProcName 2, DEFAULT
Run Code Online (Sandbox Code Playgroud)

尽管提供了第二个参数,但它实际上并不是一个值,而是使用第二个参数的默认值的指令。

当在 CREATE PROC 本身中使用时,它会进行解析,但只是将其视为 NULL。