我想知道这是否可能在SQL Server中要做到:SQL Server存储过程/光标
我的表看起来像这样:
CREATE TABLE MEMBERSHIP
(
Memebership_ID INT IDENTITY(1,1)PRIMARY KEY NOT NULL,
MemberShip_Expiry_Date Datetime,
Member_Account_Balance Money,
Member_Blacklisted bit ,--(0 for no, 1 for yes)
Customer_ID INT not null,
Last_Payment datetime
)
我想知道是否可以使用如果Last_Payment
距离插入日期超过6个月,则在其中有或没有游标的存储过程更改Member_Blacklisted
列
DECLARE @MemberID int,@Date datetime
我迄今为止尝试:
DECLARE @MemberID int,@Date datetime
-- Declaring the Cursor.
DECLARE C_Expired_Penalty_BlackList CURSOR
FOR
(
SELECT
FROM MEMBERSHIP
)
-- Open the Cursor declared.
OPEN C_Expired_Penalty_BlackList
FETCH NEXT FROM C_Expired_Penalty_BlackList INTO @MemberID,@Date
WHILE @@FETCH_STATUS = 0
BEGIN
IF @Date > DATEPART(MONTH,getdate()+6)
BEGIN
update MEMBERSHIP
set Member_Blacklisted = 1
Where Memebership_ID = @MemberID
END
FETCH NEXT FROM C_Expired_Penalty_BlackList INTO @MemberID,@Date
END
CLOSE C_Expired_Penalty_BlackList
DEALLOCATE C_Expired_Penalty_BlackList
退房beezir的答案。它会做你想做的。目前您的日期比较是无意义的,因为您将日期与int进行比较。当你这样做时,你将自1900年1月1日以来的天数与1到12之间的数字进行比较。你的比较检查将始终为真。 – 2013-05-08 19:05:05