2012-02-25 43 views
1

我錯過了什麼。我有研究,但我收到此錯誤創建存儲過程的愚蠢錯誤

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 
+1

你不能說@locked = 0在值部分。在INSERT外部執行此操作。 – DOK 2012-02-25 21:09:38

回答

0

INSERT語句之前,設置參數值,恩。

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

您還必須刪除VALUES中的分配器,例如,

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

這有什麼用?傳入參數是必需的。也許這樣做的目的是在參數列表中加入'= 0'來使這些參數成爲可選的,但是如果參數不在那裏,那麼盲目地將它們設置爲0只會有意義。 – 2012-02-25 23:03:43

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 
+0

Gacias'完美的工作。這是我最後的SP:謝謝ALTER PROCEDURE [DBO] [sp_Create_User] \t - 從網站新用戶變量創建 \t @lg_ID VARCHAR(50), \t @lg_PW的nchar(10), \t @locked INT = 1,--set默認值以考慮準備 \t @agreed INT = 0 --set值以考慮鎖定,直到該放棄已經簽署 \t AS BEGIN SET NOCOUNT ON INSERT INTO dbo.userLogin(登錄ID ,密碼,鎖定,同意) VALUES ( @lg_ID, @lg_PW, @locked, @agreed ) END – user1233025 2012-02-25 22:00:26