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?

解决方案 »

  1.   

    TRY:
    IF @USEID IS NULL
      BEGIN
        FETCH NEXT FROM @CUR_COST_ACC_BOOK_STOCK 
        CONTINUE
      END 
      

  2.   

      BEGIN 
        FETCH NEXT FROM @CUR_COST_ACC_BOOK_STOCK 
        CONTINUE 
      END 
      

  3.   

    SELECT 
        @USEID = MIN(USEID) ,@PROID = MIN(PROID)
      FROM  B 
      WHERE GJODNO = @GJODNO 再判断一下