Je voulais savoir si cela est possible de le faire dans SQL Server:SQL Server procédure stockée/curseur
Ma table ressemble à ceci:
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
)
Je voulais savoir s'il est possible d'utiliser une procédure stockée avec ou sans un curseur à l'intérieur de celle-ci pour changer la colonne Member_Blacklisted
si le Last_Payment
était plus de 6 mois à compter de la date qui doit être insérée par exemple
DECLARE @MemberID int,@Date datetime
Ma tentative à ce jour:
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
Découvrez la réponse de beezir. Il fera ce que tu veux. Actuellement, votre comparaison de date est absurde parce que vous comparez une date à un int. Lorsque vous faites cela, vous comparez le nombre de jours depuis le 1er janvier 1900 contre un nombre compris entre 1 et 12. Votre contrôle de comparaison sera toujours vrai. –