注册 登录
编程论坛 SQL Server论坛

这样写错在哪?(游标)

killer_l 发布于 2007-11-29 19:05, 1130 次点击
程序代码:
declare @xx char(20),@yy char(20) ,@zz char(20)
declare zz cursor for
select 员工号,姓名,缺勤名称 from JBQK a, QQLX b where a.缺勤类型 = b.缺勤类型 and a.缺勤天数 = 1
print '缺勤天数为1天的'
open zz
fetch next from zz into @xx,@yy,@zz
while @@fetch_status = 0
begin
    fetch next from zz into @xx,@yy,@zz
    print '员工号'++'              '+'姓名'+'               '+'缺勤名称'
        print @xx +@yy + @zz
end
close zz

declare yy cursor for
select 员工号,姓名,缺勤名称 from JBQK a, QQLX b where a.缺勤类型 = b.缺勤类型 and a.缺勤天数 = 2
print '---------------------'
print '缺勤天数为2天的'
open yy
fetch next from yy into @xx,@yy,@zz
while @@fetch_status = 0
begin
    fetch next from yy into @xx,@yy,@zz
    print '员工号'++'              '+'姓名'+'               '+'缺勤名称'
        print @xx +@yy + @zz
    
    
end
close yy
结果查出来两个结果一样的
员工号              姓名               缺勤名称
5                   邓刚                病假   
---------------------
缺勤天数为2天的
员工号              姓名               缺勤名称
4                   张晓华              事假               
员工号              姓名               缺勤名称
4                   张晓华              事假      
3 回复
#2
purana2007-11-29 20:29
while @@fetch_status = 0
begin
        
        print '员工号'++'              '+'姓名'+'               '+'缺勤名称'
        print @xx +@yy + @zz
        fetch next from yy into @xx,@yy,@zz
        
end

--试试这样子?
#3
XieLi2007-11-29 22:03
declare @xx char(20),@yy char(20) ,@zz char(20)
DECLARE @INT INT,@INT2 INT
SET @INT=1
SET @INT2=1
declare zz cursor for
select 员工号,姓名,缺勤名称 from JBQK a, QQLX b where a.缺勤类型 = b.缺勤类型 and a.缺勤天数 = 1
print '缺勤天数为1天的'
open zz
fetch next from zz into @xx,@yy,@zz
while @@fetch_status = 0
begin
        
        IF @INT=1
             BEGIN
                  print '员工号'++'              '+'姓名'+'               '+'缺勤名称'
             END
        print @xx +@yy + @zz
    SET @INT=@INT+1
        fetch next from zz into @xx,@yy,@zz
end
close zz

declare yy cursor for
select 员工号,姓名,缺勤名称 from JBQK a, QQLX b where a.缺勤类型 = b.缺勤类型 and a.缺勤天数 = 2
print '---------------------'
print '缺勤天数为2天的'
open yy
fetch next from yy into @xx,@yy,@zz
while @@fetch_status = 0
begin
        
            IF @INT2=1
             BEGIN
                  print '员工号'++'              '+'姓名'+'               '+'缺勤名称'
             END
        
        print @xx +@yy + @zz
        SET @INT2=@INT2+1
        fetch next from yy into @xx,@yy,@zz
        
        
end
close yy



这样应该可以的!
#4
killer_l2007-11-30 16:01
谢谢两位了
1