SQL Server存储过程默认值

时间:2015-08-19 00:21:00

标签: sql sql-server stored-procedures default-value

我想创建一个SQL Server(现在是2008)存储过程,其中定义了未提交的参数。谷歌和MS.com建议如下,但它不起作用:

ALTER PROCEDURE [Contracts].test2
    @first int = 6, -- default value of 6
    @second int,    
    @third int      
AS
BEGIN
    SELECT @first, @second, @third;
END

结果:0 |输入的值|输入的值

提前致谢

2 个答案:

答案 0 :(得分:1)

您必须像这样调用存储过程,它才能正常工作。

exec test2 @second=1, @third=2

答案 1 :(得分:0)

嗯,感谢您的反馈,我使用NaviCat 11来创建/测试。 。 。当我在SSMS中打开相同的(NaviCat创建的)SP时,它打开为:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [Contracts].[test2]
    @first int = 6, -- NULL default value
    @second int,    -- Default value of 2
    @third int      -- Default value of 3
AS

BEGIN

    SELECT @first, @second, @third;

END

然后正确运行"" (而在NaviCat中,由于某种原因,只要没有输入参数值,@ for first就会返回零。)