Can someone explain to me how this query works.
ALTER Proc [dbo].[usp_Check_Pet_Timer]
@

D int
AS
SET NOCOUNT ON
DECLARE @

Time datetime
DECLARE @

ID int
DECLARE @

int
DECLARE @

t int
DECLARE @

smallint
DECLARE @

UID bigint
SELECT @

ID=UserUID FROM PS_GameData.dbo.Chars WHERE CharID @

D
IF EXISTS(SELECT ItemUID FROM PS_GameData.dbo.CharItems WHERE [Type] IN (120,150) AND CharID @

D)
BEGIN
SELECT * INTO #TempTable FROM PS_GameData.dbo.CharItems WHERE ([Type]=120 or [Type]=150) AND CharID @

D
SET @

=(SELECT COUNT(ItemUID) FROM #TempTable)
SET @

t = 1
WHILE @

@

t)
BEGIN
SET @

UID =(SELECT TOP 1 ItemUID FROM #TempTable)
SET @

= (SELECT [Range] FROM PS_GameDefs.dbo.Items WHERE ItemID=(SELECT ItemID FROM #TempTable WHERE ItemUID @

UID))
SET @

Time = (SELECT Maketime FROM #TempTable WHERE ItemUID @

UID)
IF(GETDATE() > DATEADD(DD, @

@

Time) AND @

> 0)
BEGIN
DELETE FROM PS_GameData.dbo.CharItems WHERE CharID @

D AND ([Type]=120 or [Type]=150) AND ItemUID @

UID
END
DELETE FROM #TempTable WHERE ItemUID @

UID
SET @

t @

t+1
END
END
IF EXISTS(SELECT ItemUID FROM PS_GameData.dbo.UserStoredItems WHERE [Type] IN (120,150) AND UserUID @

ID)
BEGIN
SELECT * INTO #TempTableWH FROM PS_GameData.dbo.UserStoredItems WHERE ([Type]=120 or [Type]=150) AND UserUID @

ID
SET @

=(SELECT COUNT(ItemUID) FROM #TempTableWH)
SET @

t=1
WHILE @

@

t)
BEGIN
SET @

UID=(SELECT TOP 1 ItemUID FROM #TempTableWH)
SET @

= (SELECT [Range] FROM PS_GameDefs.dbo.Items WHERE ItemID=(SELECT ItemID FROM #TempTableWH WHERE ItemUID @

UID))
SET @

Time= (SELECT Maketime FROM #TempTableWH WHERE ItemUID @

UID)
IF(GETDATE() > DATEADD(DD, @

@

Time) AND @

> 0)
BEGIN
DELETE FROM PS_GameData.dbo.UserStoredItems WHERE ([Type]=120 or [Type]=150) AND UserUID @

ID AND ItemUID @

UID
END
DELETE FROM #TempTableWH WHERE ItemUID @

UID
SET @

t @

t+1
END
END
SET NOCOUNT OFF
I'm using. The count of days works, however the item is not deleted.