跳到主要內容

CURSOR TRY CATCH

DECLARE @AEName VARCHAR(50)
DECLARE @StartDate DATETIME
DECLARE @Qty float

DELETE FROM SubTB;

DECLARE CURSOR1 CURSOR FOR
SELECT AEName , Qty , StartDate FROM TBCursor WHERE  CONVERT(VARCHAR(10),StartDate,111)
BETWEEN '2018/01/10' AND '2019/07/01
'
OPEN CURSOR1
FETCH NEXT FROM CURSOR1 INTO @AEName, @Qty  ,@StartDate
WHILE @@FETCH_STATUS = 0

BEGIN
BEGIN TRY
IF @Qty > 500
BEGIN
INSERT INTO SubTB(AEName,Qty) Values(@AEName,@Qty);

DECLARE @MaxQty float;
DECLARE @NO VARCHAR(10);
SET @MaxQty = (SELECT MAX(Qty) FROM TBCursor);
SELECT @NO = CONVERT(VARCHAR(8),GETDATE(),112) ;
SET @NO = REPLACE(STR(@NO,10),SPACE(1),'0');

INSERT INTO TBCursor2(AEID,AEName,Qty,StartDate,EndDate)
Values(@NO,@AEName, @MaxQty, DATEADD(MONTH,-3,GETDATE())
,DATEADD(MONTH,1,GETDATE()));
END

ELSE
BEGIN
INSERT INTO SubTB(AEName,Qty) Values(@AEName + '不足' , 500 - @Qty );
END
FETCH NEXT FROM CURSOR1 INTO  @AEName, @Qty  ,@StartDate
END TRY
BEGIN CATCH
        SELECT ERROR_MESSAGE() AS ErrorMessage; 
END CATCH
END
CLOSE CURSOR1
DEALLOCATE CURSOR1


--SELECT AEName, Qty  ,StartDate INTO #TEMP1  FROM TBCursor
--SELECT REPLACE(STR(5,10),SPACE(1),'0')
--DATEDIFF(DAY,'2019/03/20',GETDATE())
--SELECT IDENTITY(int, 1,1) AS ID INTO #T2 
SELECT  CONVERT(VARCHAR(8),GETDATE(),112)