SET @CUR_COST_ACC_BOOK_STOCK = CURSOR FORSELECT
GJCTL1,
GJODNO
FROM A
WHERE SUBSTRING(GJODNO, 1, 1) = 'P'UNION ALLSELECT
GJCTL1,
GJODNO
FROM A
WHERE SUBSTRING(GJODNO, 1, 1) = 'A'OPEN @CUR_COST_ACC_BOOK_STOCK
FETCH NEXT FROM @CUR_COST_ACC_BOOK_STOCK
INTO
@GJCTL1,
@GJODNO
WHILE(@@FETCH_STATUS = 0)
BEGIN
DECLARE @USEID AS VARCHAR(20)
DECLARE @PROID AS VARCHAR(20) SELECT
@USEID = MIN(USEID)
FROM B
WHERE GJODNO = @GJODNO IF @USEID IS NULL
BEGIN
CONTINUE
END SELECT
@PROID = MIN(PROID)
FROM C
WHERE GJODNO = @GJODNO IF @PROID IS NULL
BEGIN
CONTINUE
END
FETCH NEXT FROM @CUR_COST_ACC_BOOK_STOCK
INTO
@GJCTL1,
@GJODNO
CLOSE @CUR_COST_ACC_BOOK_STOCK
DEALLOCATE @CUR_COST_ACC_BOOK_STOCK基本结构就是如上这样,好像一走到CONTINUE的地方,就会死在那里,
我只是想check出错,就检查下一条,不过check又很多,用if ... else ...包起来,感觉会多很多多余代码。
难道游标中,不是用CONTINUE?
GJCTL1,
GJODNO
FROM A
WHERE SUBSTRING(GJODNO, 1, 1) = 'P'UNION ALLSELECT
GJCTL1,
GJODNO
FROM A
WHERE SUBSTRING(GJODNO, 1, 1) = 'A'OPEN @CUR_COST_ACC_BOOK_STOCK
FETCH NEXT FROM @CUR_COST_ACC_BOOK_STOCK
INTO
@GJCTL1,
@GJODNO
WHILE(@@FETCH_STATUS = 0)
BEGIN
DECLARE @USEID AS VARCHAR(20)
DECLARE @PROID AS VARCHAR(20) SELECT
@USEID = MIN(USEID)
FROM B
WHERE GJODNO = @GJODNO IF @USEID IS NULL
BEGIN
CONTINUE
END SELECT
@PROID = MIN(PROID)
FROM C
WHERE GJODNO = @GJODNO IF @PROID IS NULL
BEGIN
CONTINUE
END
FETCH NEXT FROM @CUR_COST_ACC_BOOK_STOCK
INTO
@GJCTL1,
@GJODNO
CLOSE @CUR_COST_ACC_BOOK_STOCK
DEALLOCATE @CUR_COST_ACC_BOOK_STOCK基本结构就是如上这样,好像一走到CONTINUE的地方,就会死在那里,
我只是想check出错,就检查下一条,不过check又很多,用if ... else ...包起来,感觉会多很多多余代码。
难道游标中,不是用CONTINUE?
IF @USEID IS NULL
BEGIN
FETCH NEXT FROM @CUR_COST_ACC_BOOK_STOCK
CONTINUE
END
FETCH NEXT FROM @CUR_COST_ACC_BOOK_STOCK
CONTINUE
END
@USEID = MIN(USEID) ,@PROID = MIN(PROID)
FROM B
WHERE GJODNO = @GJODNO 再判断一下