游标往临时表插入数据,最后一行没插进去解决方法
游标往临时表插入数据,最后一行没插进去
我貌似没分,好人帮忙解决下!
先谢谢了
------解决方案--------------------
IF LEN(@CurrStockCode) >= 0试试,没用过游标,猜的
------解决方案--------------------
OPEN stock_cursor
set @CurrStockCode = 0
FETCH NEXT FROM stock_cursor INTO @StockCode
------解决方案--------------------
SET @CurrStockCode = ''
这里赋值问题
因为stockcode 是int 类型的
SET @CurrStockCode = '' 和int 比较的时候 空会被隐式转换为0
但是LEN('')=0
所以游标的第一次执行的时候 第二个条件不成立
------解决方案--------------------
- SQL code
---------------临时表##tb --CREATE TABLE ##t (stockcode int) --drop table ##t DECLARE @CurrStockCode VARCHAR(50) SET @CurrStockCode = '' DECLARE @StockCode VARCHAR(50) DECLARE stock_cursor CURSOR FOR SELECT STOCKCODE from ( -----查询数据 select * from stockinfo ) as tbyyb OPEN stock_cursor FETCH NEXT FROM stock_cursor INTO @StockCode WHILE @@FETCH_STATUS=0 --上一个fetch是否读取到了数据 BEGIN IF @CurrStockCode <> @StockCode BEGIN IF LEN(@CurrStockCode) > 0 BEGIN --PRINT 'code' + @CurrStockCode insert into ##t select @CurrStockCode END SET @CurrStockCode = @StockCode END FETCH next FROM stock_cursor INTO @StockCode END CLOSE stock_cursor DEALLOCATE stock_cursor ------------ 表和数据脚本 create table stockinfo ( stockcode int ) insert into stockinfo values(1) insert into stockinfo values(2) insert into stockinfo values(3) insert into stockinfo values(4) insert into stockinfo values(5)
我貌似没分,好人帮忙解决下!
先谢谢了
------解决方案--------------------
IF LEN(@CurrStockCode) >= 0试试,没用过游标,猜的
------解决方案--------------------
OPEN stock_cursor
set @CurrStockCode = 0
FETCH NEXT FROM stock_cursor INTO @StockCode
------解决方案--------------------
SET @CurrStockCode = ''
这里赋值问题
因为stockcode 是int 类型的
SET @CurrStockCode = '' 和int 比较的时候 空会被隐式转换为0
但是LEN('')=0
所以游标的第一次执行的时候 第二个条件不成立
------解决方案--------------------
- SQL code
insert into ##t select @CurrStockCode 改成 insert into ##t select @StockCode