个人认为能不用cursor还是不用的好

解决方案 »

  1.   

    Cursor还是比较灵活,在进行逐条处理时,Cursor是很方便的。
      

  2.   

    少用游标!
    是最好的方法!
    create proc sp_kk @empid varchar(100)
    as
      exec ('insert into B select '''+@empID +''',* from a')
      
    go
      

  3.   

    这样应该就行了:declare @EmpID varchar(10)
    set @empid= 'ID_rikky'insert b select * from (select @empid as EmpID) a,tableA
      

  4.   

    declare @a table(日期 datetime,班次 varchar(10),备注 varchar(10))
    insert @a select '2002-12-1',         '早班',             NULL
    union all select      '2002-12-2',     '早班',         '大家好'
    union all select     '2002-12-3',      '中班',            NULL
    declare @b table (员工ID varchar(10),日期 datetime,班次 varchar(10), 备注 varchar(10))declare @EmpID varchar(10)
    set @empid= 'ID_rikky'insert @b select * from (select @empid as EmpID) a,@a
    select * from @b员工ID       日期                       班次         备注         
    ---------- -------------------------- ---------- ---------- 
    ID_rikky   2002-12-01 00:00:00.000     早班         NULL
    ID_rikky   2002-12-02 00:00:00.000     早班         大家好
    ID_rikky   2002-12-03 00:00:00.000     中班         NULL(所影响的行数为 3 行)
      

  5.   

    脑袋短路:
    insert b select * from select @empid,* tableA
      

  6.   

    Cursor 不到万不得已一般不用,这是以牺牲数据库性能为代价的可以把复杂的数据操作放在客户端来生成sql脚本,发送到服务器端;过分依赖关系性数据的特性,为系统维护和扩充升级、移植带来太多的麻烦中间的平衡靠你自己的经验来权衡吧!
      

  7.   

    楼上的说的十分有道理呀,这个东东最好少用,如果养成习惯
    使用这个东东对自己以后写SQL语句不好.我就是这样呀.
      

  8.   

    各位说得很有道理,不过我认为sqlserver之所以存在游标,肯定有他存在的价值.
    所以我们还是应该搞清楚原理,在合适条件下就应该来用.
      

  9.   

    对!多用子查循!
    insert 表 select * from 另一个表
    update 表 set 列=A.列 from 另一个表 A where 表.编号=A.编号
    delete 表 where 编号 in (select 编号 from 另一个表)
      

  10.   

    对!多用子查循!
    insert 表 select * from 另一个表
    update 表 set 列=A.列 from 另一个表 A where 表.编号=A.编号
    delete 表 where 编号 in (select 编号 from 另一个表)