首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

游標問題解决思路

2012-01-31 
游標問題ALTERprocedureplxz@deptchar(6),@k_teacherchar(8),@k_modechar(20),@k_taskchar(40),@k_datecha

游標問題
ALTER           procedure   plxz   @dept       char(6),    
                                                                            @k_teacher   char(8),
                                                                            @k_mode   char(20),
                                                                            @k_task   char(40),
                                                                            @k_date   char(16),
                                                                            @k_grade   char(10),
                                                                            @k_add   char(10)                                                                  
                                                                                                                                                                                       
as  
declare         @emp_code   char(10)
declare         @dept_code   char(10)
declare         @sex     char(10)
declare         @emp_name   char(10)
declare         @edu     char(10)
declare         @skill     char(10)
declare         @in_date     char(10)


declare   cur_plxz   cursor   for
select   emp_code,dept_code,sex,emp_name,edu,skill,in_date   from   t_emp
                                where     leave_flag= 'N '   and     dept_code=@dept            


open   cur_plxz
fetch   next   from   cur_plxz   into     @emp_code   ,@dept_code,@sex,@emp_name,@edu,@skill,@in_date

while   @@fetch_status=0      
          begin                  
                                      insert   into   lita_xlka(k_emp_code,k_dept_code,k_sex,k_emp_name,k_edu,k_skill,k_in_date,k_teacher,k_mode,k_task,k_date,k_grade,k_add,k_creat_date)
                                            values(@emp_code   ,@dept_code,@sex,@emp_name,@edu,@skill,@in_date,@k_teacher,@k_mode,@k_task,@k_date,@k_grade,@k_add,convert(char(10),getdate(),120))
      end  
fetch   next   from   cur_plxz   into     @emp_code   ,@dept_code,@sex,@emp_name,@edu,@skill,@in_date
Close     cur_plxz
Deallocate     cur_plxz

我在表t_emp中查找出dept_code=@dept几條記錄.
我想每條記錄插入lita_xlka中.但總是重復插入在t_emp查找出來的第一條記錄很多次

各位高手幫我看一下問題出在那儿


[解决办法]
ALTER procedure plxz @dept char(6),
@k_teacher char(8),
@k_mode char(20),
@k_task char(40),
@k_date char(16),
@k_grade char(10),
@k_add char(10)

as
declare @emp_code char(10)
declare @dept_code char(10)
declare @sex char(10)
declare @emp_name char(10)
declare @edu char(10)
declare @skill char(10)
declare @in_date char(10)


declare cur_plxz cursor for
select emp_code,dept_code,sex,emp_name,edu,skill,in_date from t_emp
where leave_flag= 'N ' and dept_code=@dept
open cur_plxz
fetch next from cur_plxz into @emp_code ,@dept_code,@sex,@emp_name,@edu,@skill,@in_date

while @@fetch_status=0
begin
insert into lita_xlka(k_emp_code,k_dept_code,k_sex,k_emp_name,k_edu,k_skill,k_in_date,k_teacher,k_mode,k_task,k_date,k_grade,k_add,k_creat_date)
values(@emp_code ,@dept_code,@sex,@emp_name,@edu,@skill,@in_date,@k_teacher,@k_mode,@k_task,@k_date,@k_grade,@k_add,convert(char(10),getdate(),120))
--放在循环里面
fetch next from cur_plxz into @emp_code ,@dept_code,@sex,@emp_name,@edu,@skill,@in_date
end

Close cur_plxz
Deallocate cur_plxz

热点排行