【发布时间】:2014-09-05 03:32:29
【问题描述】:
我在比较 TSQL 中的两个变量时遇到了一点问题。
这是代码
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sspUpdateActivityDate] (
@e nvarchar(15),
@i nvarchar(11),
@c nvarchar(50),
@u nvarchar(50)
)
AS
BEGIN
DECLARE @var_Count int
DECLARE @var_RecordLimit int
SET @var_RecordLimit = 20
SELECT @var_Count = COUNT(*) FROM tblLastAccess WHERE employeeID = @e
IF @var_Count > @var_RecordLimit
BEGIN
DELETE FROM tblLastAccess
WHERE lastDate NOT IN (
SELECT TOP @var_RecordLimit lastDate
FROM tblLastAccess
WHERE employeeID = @e
ORDER BY lastDate DESC
)
END
INSERT INTO tblLastAccess(employeeID, ip, computerName, username) VALUES (@e, @i, @c, @u)
END
错误提示
消息 102,级别 15,状态 1,过程 sspUpdateActivityDate,第 19 行
'@var_RecordLimit' 附近的语法不正确。
@var_Count 和@var_RecordLimit 比较后的哪些点(据我了解)
想法是添加记录但动态限制记录数,我最初设置为 20。IF 内的代码块是删除 TOP n 旁边的记录strong> 价值观。
顺便说一下,我使用的是 SQL Server 2000。
请指导我。
顺便说一句,这是为了更新,这就是我使用 ALTER 而不是 CREATE 的原因
【问题讨论】:
-
只是为了好奇,如果你用括号括住那个变量,比如
TOP(@var_RecordLimit)。
标签: sql tsql sql-server-2000