例如先select一个表
要根据这个表对另一个表进行操作 例如更新之类的
一般我是在程序中操作的
如果我想在储存过程中执行该怎么做呢(怎么像程序那样可以取出记录循环操作)

解决方案 »

  1.   

    一.使用游标..
    二.update a set x=x2 
       from xx a
       where exists(select 1 from xxx wwhere a.x=x)
      

  2.   

    游标是什么意思
    能举个例子吗
    我对sql不太熟
      

  3.   

    还有我想问问
    select 1
    代表什么意思
    因为我都是用
    select top 1 *
    这样的方式
    不知是不是一样的效果呢
      

  4.   

    例如根据对应ID更新对应col的值update A
    set A.col = B.col
    from A,B
    where A.id = b.id
      

  5.   

    select 1 就是一列常数1 
    select top 1选第一条
    游标:
    DECLARE authors_cursor CURSOR
       FOR SELECT * FROM authors
    OPEN authors_cursor
    FETCH NEXT FROM authors_cursor
      

  6.   

    这个呀,楼主可以去看看SQL Server的联机丛书,里面就有关于update语句的详细描述。
      

  7.   

    定义游标
    在程序中是.movefirst,.movenext操作在程序sql server中为
    1.定义游标,打开游标,如5楼所述fetch next from 游标名 into @变量...  --将游标定义的字段取出赋给变量
    while @@fetch_status=0
    begin
      --处理语句
      fetch next from 游标名 into @变量...  --再取下一条记录
    end
    close 游标名 --关闭游标
    deallocate 游标名 --释放已定义的游标