2013-05-21 182 views
0

我創建了一個存儲過程,它從數據庫中刪除用戶名列表。然而這個腳本的輸出很奇怪。它將作爲用戶名輸入的輸入視爲列。它爲什麼這樣做?SQL Server:存儲過程沒有返回正確的結果

CREATE PROCEDURE [dbo].[sp_deleteUsersFromDb](@username varchar(500)) AS 
BEGIN 
    DECLARE @SQL varchar(600) 

    EXEC('UPDATE [dbo].USER SET DELETED = 1 WHERE USERNAME IN (' + @username + ')') 

    PRINT N'DELETED THE USERS FROM THE DB' 
END 

當我運行此我得到

消息207,級別16,狀態1,行1
無效列名 'USER1'。
DELETED從數據庫中USERS

表模式是:

CREATE TABLE [dbo].[USER](
[ID] [int] IDENTITY(1,1) NOT NULL, 
[VERSION] [int] NOT NULL, 
[USERNAME] [varchar](32) NOT NULL, 
[DELETED] [bit] NULL, 

    CONSTRAINT [USER_PK] 
    PRIMARY KEY CLUSTERED ([ID] ASC) 
) ON [PRIMARY] 

回答

2

的@username參數必須包含引用用戶名,例如 「 'USER1', '用戶2'」