创建存储过程的愚蠢错误

时间:2012-02-25 20:51:40

标签: sql-server-2008-r2

我错过了什么。我已经研究过但是我收到了这个错误

Msg 102, Level 15, State 1, Procedure sp_Create_User, Line 33
Incorrect syntax near '='.

这是程序

CREATE PROCEDURE [dbo].[sp_Create_User] 
    -- variables from site for new user create
    @lg_ID varchar(50),
    @lg_PW nchar(10),
    @locked int,
    @agreed int
AS 
BEGIN 
     SET NOCOUNT ON 

     INSERT INTO dbo.userLogin
          (LoginID, password, locked, agreed) 
     VALUES 
          (@lg_ID, @lg_PW, @locked = 0, @agreed = 0) 
END 

2 个答案:

答案 0 :(得分:0)

在INSERT语句之前,设置参数值,例如。

SET @locked = 0
SET @agreed = 0
...

您还必须删除VALUES中的分配,例如。

VALUES 
      ( 
        @lg_ID,
        @lg_PW,
        @locked,
        @agreed            
      ) 

答案 1 :(得分:0)

看起来你想要0作为@locked和@agreed的默认值。而不是@locked = 0尝试isnull(@locked, 0)。 isnull用指定的替换值替换空值。

此外,您可以通过以下方式为存储过程参数创建默认值:

CREATE PROCEDURE [dbo].[sp_Create_User] 
    -- variables from site for new user create
    @lg_ID varchar(50),
    @lg_PW nchar(10),
    @locked int = 0,
    @agreed int = 0

AS