日期:2014-05-18  浏览次数:20423 次

存储过程循环取记录问题
例如:   我有一个表
          staffID   StaffName
                1                 xxx
                2                 yyy
                3                 zzz
我现在想每次只取一条记录(staffID这个字段的值)
          并将它赋与另一个变量
                                            如:@Staff_ID=staffID
关键是这个循环怎么做`??

高手帮帮我,帮帮我.....
分不是很多``

------解决方案--------------------
用游标,到网上查查具体的代码。
------解决方案--------------------
题问题前最好好好设计一下问题,也许你的问题并不是眼前这一点问题。如果你上到楼顶,你问别人“怎么到达上一层”,别人也许只能给你一个会摔死你的答案。

你把问题提得稍微实用一点,放在上下文中,直到它显得有点难度,才好得到合适的答案。
------解决方案--------------------
汗颜,楼主是不是想做一个汇总表呀,

每一条员工信息下面有一排考勤记录呀?

汗...先取得你要提取的员工记录,如
表A:

select * from TABLEA where 条件;

然后再取考勤表的记录:
select * from TABLEB where staffid in (select staffid from TABLEA where 条件)

你可以把TABLEA定义成局部变量来实现


------解决方案--------------------
把你的各个相关表的定义写完整,对字段做(几个字就可以)简短的注释......你的问题其实应该到数据库论坛里去问,只要一条select语句就可以查询出来了。
------解决方案--------------------
其实你已经取的结果,剩下的事情应交有编程语言来做,而不该让SQL一步到位,数据库不是万能的,你在SELECT的过程中尽量做到在最优化的情况下取得最有可能取到的最佳结果,不要为了结果而去强求SQL,这样只会让你的SQL语句耗更大的资源,如果是用ASP.NET的话,你可以在数据绑定的情况下,在定义DATAGRID或DATALIST里对结果进行计算,这样会更省事,同样,你在做统计的时候,还有一个月份变量你还没考虑进去(或者你没写出来),在你传月份变量的时候你可以很简便的在程序中取得月份的总天数,而不是在SQL中去计算,同样的事情,你试着让SQL和程序各司其职,有时你会发现有更好的效果,而不是钻在SQL的牛角尖里出不来,试着经常换个思路,条条大道通罗马哦
------解决方案--------------------
sql里面用游标

c#的话放在datatable里面就可以了