存储如何向原来字段中追加数据 
原来有u_friends字段,内容为uid1,uid2, 
现在传入一个数据为uid3, 
所以后来更新为uid1,uid2,uid3, 如果不用存储,在程序中肯定是先读出uid1,uid2, 
后把uid1,uid2,uid3,更新到数据中。 我现在想用存储来完成。 
我基本没看过存储 
自己按自己想法写了一个没用。因为我对存储没有基本知识。 CREATE PROCEDURE addfriends 

@fid nvarchar(50), 
@uid nvarchar(50), 
@oldfids nvarchar(3000) output 

AS 
select @oldfids=[u_friends] from [ac_user] where [u_id]=@uid 
update [ac_user] set [u_friends] =@oldfids+@fid where [u_id]=@uid 
GO

解决方案 »

  1.   


    update T
    set  u_friends=u_friends+@fid 
      

  2.   

    改下:CREATE PROCEDURE addfriends  
    (  
    @fid nvarchar(50),  
    @uid nvarchar(50)  
    )  
    AS  
    update [ac_user] set [u_friends] = [u_friends] + ',' + @fid where [u_id]=@uid  
    GO 
      

  3.   

    CREATE PROCEDURE addfriends
    (
    @fid nvarchar(50),
    @uid nvarchar(50)
    )
     AS
    update [ac_user] set [u_friends] =[u_friends]+@fid where [u_id]=@uid
    GO改成这样了。在查询分析器中用了下。发现没反映???????
    能确定uid一定是输入了一个存在的数据。
      

  4.   

    改为
    update [ac_user] set [u_friends]= @fid where [u_id]=@uid 
    GO 
    发现是更新了数据。
    但是
    update [ac_user] set [u_friends] =[u_friends]+@fid where [u_id]=@uid 
    会保持原数据。为什么?
      

  5.   

    刚又测试了下。
    update [ac_user] set [u_friends] = [u_friends] + ',' + @fid where [u_id]=@uid  
    这个可以。
    update [ac_user] set [u_friends] =[u_friends]+@fid where [u_id]=@uid  
    这个却不行。我汗。
    [u_friends]+@fid
    这个不是这样写的?
      

  6.   

    你这原来的数据是uid1,uid2,传进去一个uid3,变成uid1,uid2,uid3,
    不就是原来的加传进去的吗?
    你调用存储过程这样啊
    exec addfriends('uid3',你要改变的id)你是因为传进去uid1,uid2,uid3,所以才发现你说的结果吧? 
      

  7.   

    我的错误
    我在程序中。 
    fid += "/*/";
    /*/的问题。晕死。
      

  8.   

    update [ac_user] set [u_friends] =[u_friends]+@fid where [u_id]=@uid   
    这个也可以啊。