以前一直没用过数据库的游标,前段时间用到,这里做下简单的总结记录,以便下次再用时能很快入手。

简单代码段

DECLARE @StockCode VARCHAR(8),
@InPoolDate VARCHAR(8),
@InPoolPrice Decimal(6, 2),
              @InPoolTotalStocks Decimal(18, 4),
@MaxChangeRatio FLOAT,@ChangeRatio FLOAT,
@CurPrice FLOAT,
              @InPoolMaxPriceChangeRatio FLOAT,
@NowTotalStocks Decimal(18, 4)
1定义游标
DECLARE VITM1_Cursor CURSOR FAST_FORWARD(优化效率)FOR
SELECT StockCode,Price,ChooseDate,TotalStocks
FROM F_POOL_VITM1 WITH(NOLOCK)
WHERE ChooseDate>=@DateTemp0
2打开游标
OPEN VITM1_Cursor
FETCH NEXT FROM VITM1_Cursor
          INTO @StockCode,@InPoolPrice,@InPoolDate,@InPoolTotalStocks
 
3判断状态
WHILE @@FETCH_STATUS=0
BEGIN
       。。。
      
4获取下一列数据
    FETCH NEXT FROM VITM1_Cursor
        INTO @StockCode,@InPoolPrice,@InPoolDate,@InPoolTotalStocks
END
   
5关闭游标
CLOSE VITM1_Cursor;
DEALLOCATE VITM1_Cursor;

#临时表

CREATE TABLE #BaseTmp(MarketId INT,
                            ChooseDate CHAR(8),
                            StockCode CHAR(6),
                            PRICE DECIMAL(6,2),
                            TotalStocks DECIMAL(18,4),
                            Rank INT,
                            II0 FLOAT,
                            VITM_Star1 FLOAT
                         )
DROP TABLE #BaseTmp