假定有一个表A中有一字段 flag 
如何写一个存储过程,读取表中的某一条记录时,同时更新 flag中的值??

解决方案 »

  1.   

    你想如何更新flag?让它做怎样的更新
      

  2.   

    CREATE proc p_Update
    @XTBH int,@flag varchar(10)
    as
     update A set flag=@flag where XTBH=@XTBH
     select * from A where XTBH=@XTBH
      

  3.   

    用视图肯定不行啊
    这样做吧
    CREATE proc sp_Update 
    @XTBH int,@flag varchar(10) 
    as 
    update A set flag=@flag where XTBH=@XTBH 
    select * from A where XTBH=@XTBH
    go 
    exec sp_Update
      

  4.   

    CREATE proc p_Update 
    @XTBH int,@flag varchar(10) 
    as 
    update A set flag=@flag where XTBH=@XTBH 
    select * from A where XTBH=@XTBH
    [/Quote]
      

  5.   

    不知道你要如何的更新?
      存储过程绝对可以实现的create proc find
    @id int,--假设这里是查询的条件,当然最好是主键
    @content varchar(50) --要更新的结果
    as
    select * from table_name where 主键=@id
    update table_name set flag=@content where 主键=@id
      

  6.   

    存储过程可以实现.
    我想楼主应该是想先查询,然后更新吧。
    create procedure search
    @id int,
    @falgvalue int
    as
    select * from tb1 where id=@id
    update tb1 set flag=@falgvalue where id=@idgoexec search 1,2godrop procedure searchgo
      

  7.   

    楼上朋友说得对,我说错了,应该是:
    不用传递参数的更改.比如:select top 1 from A
    然后把这条记录中的flag字段更新,不知道这条记录的ID
      

  8.   


    select * from tb1 where ....
    update tb1 set flag=@falgvalue where ...
    普通的条件查询直接将update与select 的where条件统一一下就可以了
    如果像你说的top这样的你可以这样update tb1 set flag=XXX whre tb1.id in (select top 1 id from tb1)
    这样进行更新
      

  9.   

    谢谢12楼的,我还有个问题,如果数据库中的记录在不断变化,使用此方法参做到select与update操作的是同一条记录吗?