SQL Server:存储过程未返回正确的结果

时间:2013-05-21 01:44:54

标签: sql

我创建了一个存储过程,用于从数据库中删除用户名列表。但是这个脚本的输出很奇怪。它将作为用户名输入的输入视为列。为什么这样做?

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

当我跑步时,我得到了

  

Msg 207,Level 16,State 1,Line 1
  列名称“user1”无效。
  从数据库中删除了用户

表架构是:

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]

1 个答案:

答案 0 :(得分:2)

@username参数必须包含带引号的用户名,例如“'user1','user2'”