Sql 我的脚本在3行以上没有效果

Sql 我的脚本在3行以上没有效果,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,脚本有两行时工作正常。从3开始停止阅读 这是MSSQL Server 2005。无论如何都要尝试,没有任何结果 DECLARE @CurrentAccountLevel int DECLARE @CurrentAccountExpireDate smalldatetime SELECT @CurrentAccountLevel=Type,@CurrentAccountExpireDate=Date FROM T_VIPList IF(@CurrentAccountLevel <>

脚本有两行时工作正常。从3开始停止阅读

这是MSSQL Server 2005。无论如何都要尝试,没有任何结果

DECLARE @CurrentAccountLevel int
DECLARE @CurrentAccountExpireDate smalldatetime

SELECT @CurrentAccountLevel=Type,@CurrentAccountExpireDate=Date FROM T_VIPList

IF(@CurrentAccountLevel <> 0 AND getdate() > @CurrentAccountExpireDate)
BEGIN
SET @CurrentAccountLevel = '0'

UPDATE T_VIPList SET Type=@CurrentAccountLevel,Date=@CurrentAccountExpireDate 
END
声明@CurrentAccountLevel int
声明@CurrentAccountExpireDate smalldatetime
选择@CurrentAccountLevel=Type,@CurrentAccountExpireDate=T_VIPList中的日期
如果(@CurrentAccountLevel 0和getdate()>@CurrentAccountExpireDate)
开始
设置@CurrentAccountLevel='0'
更新T_VIPList集合类型=@CurrentAccountLevel,日期=@CurrentAccountExpireDate
结束

没有错误消息。但是如果我有超过10行,它不会影响应该影响的行。

如果您的评论中有新的信息,您应该将其简化为update语句。不需要变量、IF语句等

UPDATE T_VIPList SET Type = '0'
where Date < getdate()
    and Type <> '0'
UPDATE T_VIPList SET Type='0'
其中Date
如果您的评论中有新的信息,您应该将其简化为更新语句。不需要变量、IF语句等

UPDATE T_VIPList SET Type = '0'
where Date < getdate()
    and Type <> '0'
UPDATE T_VIPList SET Type='0'
其中Date
您的脚本有一个主要缺陷。您可以从select语句中设置标量变量,该语句和T_VIPList可能包含多行。因此,变量将被设置为该表/视图中的任意值。您所经历的行为是因为这里的逻辑缺陷,而不是行数。不清楚您在这里试图做什么。请以格式化文本的形式发布示例数据和预期结果,您的数据库升级时间已经过了很久。Sql server 2005自2016年以来一直不受支持。2008版甚至不再受支持。@SeanLange这就是我想要的。这是一个VIP会员。当到达某个日期时,应将类型状态从1更改为0。这就是为什么没有WHERE。@Sami基本上我希望在到达某个日期时,类型从1更改为0。响应VIP会员身份您的脚本存在重大缺陷。您可以从select语句中设置标量变量,该语句和T_VIPList可能包含多行。因此,变量将被设置为该表/视图中的任意值。您所经历的行为是因为这里的逻辑缺陷,而不是行数。不清楚您在这里试图做什么。请以格式化文本的形式发布示例数据和预期结果,您的数据库升级时间已经过了很久。Sql server 2005自2016年以来一直不受支持。2008版甚至不再受支持。@SeanLange这就是我想要的。这是一个VIP会员。当到达某个日期时,应将类型状态从1更改为0。这就是为什么没有WHERE。@Sami基本上我希望在到达某个日期时,类型从1更改为0。回复VIP会员