SQL游标问题

SQL游标问题,第1张

你这个比较复杂啊:(

DECLARE @dateLast DATETIME -- 上一条时间,用于比较

DECLARE @date DATETIME

,@vin VARCHAR(10)

,@a INT

,@b INT

-- 1定义游标

DECLARE cur_ CURSOR FOR

SELECT C_DATE, vin, a, b

FROM TableX

OPEN @cur_

-- 2取第1条记录

FETCH NEXT FROM cur_ INTO @dateLast, @vin, @a, @b

--3循环处理

--30 取下1条记录

FETCH NEXT FROM cur INTO @date, @vin, @a, @b

WHILE @@FETCH_STATUS = 0

BEGIN

-- 31 比较日期

IF @date <> @dateLast + 1

BEGIN 

--311 缺漏,则插入

INSERT INTO TableX(C_Date, vin, a, b)

SELECT @date + 1 -- 注意:新日期

,vin

,a

,b

FROM TableX

WHERE C_Date = @dateLast

-- 312 

SET @dateLast = @dateLast + 1 --可能缺漏不止1天,所以依然要循环

END

ELSE

--39 取下一条

FETCH NEXT FROM cur INTO @date, @vin, @a, @b

END

--4 关闭游标

CLOSE cur_

DEALLOCATE cur_

你通过游标把所有数据都取了,可是语句set @word=@fgroup+@word2,只在@word保留了当前取得的数据,最后当然只有最后一行数据了,把set @word=@fgroup+@word2改成set @word=@word+@fgroup+@word2 试试。

用dbms_sql实现吧,参考下面语句

declare

v_cursorid number;

v_selectrecords varchar2(500);

v_numrows integer;

v_mynum integer;

v_mytext varchar(50);

begin

v_cursorid := dbms_sqlopen_cursor;

v_selectrecords := 'select from mytable';

dbms_sqlparse(v_cursorid,v_selectrecords,dbms_sqlnative);

dbms_sqldefine_column(v_cursorid,1,v_mynum);

dbms_sqldefine_column(v_cursorid,2,v_mytext,50);

v_numrows := dbms_sqlexecute(v_cursorid);

loop

if dbms_sqlfetch_rows(v_cursorid)=0 then exit;

end if;

dbms_sqlcolumn_value(v_cursorid,1,v_mynum);

dbms_sqlcolumn_value(v_cursorid,2,v_mytext);

dbms_outputput_line(v_mynum||' '||v_mytext);

end loop;

dbms_sqlclose_cursor(v_cursorid);

end;

declare @专业代码名称 varchar(50)

declare cur_test cursor for select 专业名称 from dbo数据总表 where 条件 group by 专业名称

open cur_test

fetch cur_test into @专业代码名称

while(@@fetch_status = 0)

begin

--这里是你自己要做的 *** 作内容。比如查询变量值

select @专业代码名称

fetch next from cur_test into @专业代码名称

end

close cur_test

deallocate cur_test供xuanhao2016参考。如有帮助你采纳。可到IT实验室,天天件测试网论坛上进一步交流。

以上就是关于SQL游标问题全部的内容,包括:SQL游标问题、求助:MSSQL游标 next 后只能取一行数据、这个存储过程游标为什么不能执行sql语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9671018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存