好象
DECLARE CUR_CHEAPEST CURSOR SCROLL
FOR
SELECT AGIOTYPE,AGIOPARA,AGIOVALUE FROM T_FEEAGIO WHERE SUBSTRING (AGIOSEGMENT,@iBeginhour+1,1)='1' ORDER BY AGIOVALUE
要放到WHILE (@iCounter>0)里面
DECLARE CUR_CHEAPEST CURSOR SCROLL
FOR
SELECT AGIOTYPE,AGIOPARA,AGIOVALUE FROM T_FEEAGIO WHERE SUBSTRING (AGIOSEGMENT,@iBeginhour+1,1)='1' ORDER BY AGIOVALUE
要放到WHILE (@iCounter>0)里面
FOR
SELECT AGIOTYPE,AGIOPARA,AGIOVALUE FROM T_FEEAGIO WHERE SUBSTRING (AGIOSEGMENT,@iBeginhour+1,1)='1' ORDER BY AGIOVALUE
OPEN CUR_CHEAPEST
FETCH NEXT FROM CUR_CHEAP INTO @bAgiotype,@sAgiopara,@dAgiovalue
WHILE (@iCounter>0)
BEGIN
FETCH NEXT FROM CUR_CHEAP INTO @bAgiotype,@sAgiopara,@dAgiovalue
WHILE (@@FETCH_STATUS=0)
BEGIN
....
END
CLOSE CUR_CHEAPEST
SET @iBeginhour=@iBeginhour+1
SET @iCounter=@iCounter-1
END
DEALLOCATE CUR_CHEAPEST
DECLARE CUR_CHEAPEST CURSOR SCROLL
FOR
SELECT AGIOTYPE,AGIOPARA,AGIOVALUE FROM T_FEEAGIO WHERE SUBSTRING (AGIOSEGMENT,@iBeginhour+1,1)='1' ORDER BY AGIOVALUE
OPEN CUR_CHEAPEST
FETCH NEXT FROM CUR_CHEAP INTO @bAgiotype,@sAgiopara,@dAgiovalue
WHILE (@iCounter>0)
BEGIN
WHILE (@@FETCH_STATUS=0)
BEGIN
....
END
FETCH NEXT FROM CUR_CHEAP INTO @bAgiotype,@sAgiopara,@dAgiovalue
SET @iBeginhour=@iBeginhour+1
SET @iCounter=@iCounter-1
END
CLOSE CUR_CHEAPEST
DEALLOCATE CUR_CHEAPEST
FOR
SELECT AGIOTYPE,AGIOPARA,AGIOVALUE FROM T_FEEAGIO WHERE SUBSTRING (AGIOSEGMENT,@iBeginhour+1,1)='1' ORDER BY AGIOVALUE
OPEN CUR_CHEAPEST
FETCH NEXT FROM CUR_CHEAP INTO @bAgiotype,@sAgiopara,@dAgiovalue
WHILE (@iCounter>0)
BEGIN
WHILE (@@FETCH_STATUS=0)
BEGIN
....
FETCH NEXT FROM CUR_CHEAP INTO @bAgiotype,@sAgiopara,@dAgiovalue
END
SET @iBeginhour=@iBeginhour+1
SET @iCounter=@iCounter-1
END
CLOSE CUR_CHEAPEST
DEALLOCATE CUR_CHEAPEST
把FETCH放到循环里面可以吗?
FOR这样试试,
FOR select_statement
所以DECLARE CUR_CHEAPEST CURSOR SCROLL FOR 是有问题的,应该是DECLARE CUR_CHEAPEST SCROLL CURSOR
FOR再改成下面的试试DECLARE CUR_CHEAPEST SCROLL CURSOR LOCAL
FOR
WHILE (@iCounter>0)
BEGIN
DECLARE CUR_CHEAPEST CURSOR SCROLL
FOR
SELECT AGIOTYPE,AGIOPARA,AGIOVALUE FROM T_FEEAGIO WHERE SUBSTRING (AGIOSEGMENT,@iBeginhour+1,1)='1' ORDER BY AGIOVALUE
OPEN CUR_CHEAPEST
FETCH NEXT FROM CUR_CHEAP INTO @bAgiotype,@sAgiopara,@dAgiovalue
WHILE (@@FETCH_STATUS=0)
BEGIN
....
END
CLOSE CUR_CHEAPEST
SET @iBeginhour=@iBeginhour+1
SET @iCounter=@iCounter-1
DEALLOCATE CUR_CHEAPEST
END
***********************************************
参数变化后要重新定义游标,试试看上面的