我想知道這是否可能在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