EXEC   queryfeed   @id='1' 
结果是:
某某 关注了 某某2 
某某 更新了相册
某某 给 某某3 留言:哈哈
其中“某某”是id=1对应的用户名。某某2和某某3是下表中touserid字段截取的ID。
queryfeed 中结果是靠print 输出的。print @txt 
现在的想法是把这个返回的结果做为 某个表的新字段添加进去。
现有表:feed
ID   USERID   ADDDATA     TOUSERID    TITLE
1    1        2012-8-1    {*au:34*}   {*ac*}关注了{*au*}
2    1        2012-8-1     null       {*ac*}更新了相册
3    1        2012-8-1    {*au:38*}   {*ac*}给{*au*}留言:哈哈 想把这个存储过程中的结果添加到上面这个表中。
如:
ID   USERID   ADDDATA     TOUSERID    TITLE                       content
1    1        2012-8-1    {*au:34*}   {*ac*}关注了{*au*}          某某 关注了 某某2 
2    1        2012-8-1     null       {*ac*}更新了相册            某某 更新了相册
3    1        2012-8-1    {*au:38*}   {*ac*}给{*au*}留言:哈哈    某某 给 某某3 留言:哈哈

解决方案 »

  1.   

    修改你的queryfeed  存储过程 返回一个table 
    这样你就可以关联你这个feed表 
      

  2.   

    http://topic.csdn.net/u/20120823/14/cf8d258f-7654-469e-a8f6-a06c2bd6ecf3.html?519789394之前的这个帖子里提供的CODE ,写的存储过程。
    create proc Ganker
    as
    declare @num int
    set @num=0
    declare @str1 varchar(50)
    declare @str2 varchar(50)
    declare @i int
    declare @j int
    declare @val1 varchar(50)
    declare @val2 varchar(50)
    declare @name1 varchar(50)
    declare @name2 varchar(50)
    declare @txt varchar(100)
    declare @count int
    select @count=COUNT(*) from [log]beginwhile(@count>=@num+1)
      begin
        
    select top(1) @str1=Title from [Log] where id not in (select top(@num) id from [Log]) -- 一次读取一条数据set @i=charindex('{',@str1)--获取第一个前括号
    set @j=CHARINDEX('}',@str1)-- 获取第一个后括号
    set @val1=substring(@str1,@i+1,@j-@i-1)-- 获取括号里面的 UserID
    set @str1=SUBSTRING(@str1,@j+1,len(@str1)-@j+1)-- 获取去除括号后的Titleset @i=CHARINDEX('{',@str1) -- 在去除第一个括号后 再次截取'{' 看是否有值
    if(@i=0) --为0说明 没有括号了
    begin
    select @name1=name from [User] where UserID=@val1 --根据ID 获取 名字
    set @txt=@name1+@str1
    print @txt   
    end
    else --如果不为0 说明还有括号
    begin
    set @str2=SUBSTRING(@str1,1,@i-1) --截取 两个括号之间的文字
    set @j=CHARINDEX('}',@str1) --获取后一个括号的'}'set @val2=substring(@str1,@i+1,@j-@i-1) --获取第二个括号内的 UserId
    select @name1=name from [User] where UserID=@val1 --获取第一个括号里UserID的名字
    select @name2=name from [User] where UserID=@val2 --获取第二个括号里UserID的名字if(@j<LEN(@str1)) -- 如果后一个括号的长度 < 截取后title的长度 说明'}'后面还有内容
    begin
    set @str1=SUBSTRING(@str1,@j+1,len(@str1)-@j+1) --获取第二个括号后面的内容
    set @txt=@name1+@str2+@name2+@str1
    print @txt
    end 
    else -- 如果后一个括号的长度 = 截取后title的长度 说明'}'后面没有内容了
    begin
    set @txt = @name1+@str2+@name2
    print @txt
    end
    end
    set @num=@num+1
      end 
      
    end
      

  3.   

    没有太认真看 你为什么用循环呢? 一次性截取不可以吗?或者顶一个一个临时表,把截取的内容存入到临时表 不要组合在一起print
      

  4.   

    因为是一开始TITLE中内容有{*ac*}或者{*au*}的。每条记录可能都不一样。而且对应的不同USERID可能记录数量都会有变化。
    feed表
    ID USERID ADDDATA    TOUSERID      TITLE
    1  1    2012-8-1      {*au:34*}    {*ac*}关注了{*au*}
    2  1    2012-8-1      null         {*ac*}更新了相册
    3  1    2012-8-1      {*au:38*}    {*ac*}给{*au*}留言:哈哈 
    4  2    2012-8-1      {*au:50*}    {*ac*}给{*au*}留言:哈哈2
    5  3    2012-8-1      null         {*ac*}更新了头像
    通过userid 能获取user表中的用户信息,tosuerid 中的阿拉伯数字也是用户ID。
    所以通过循环把里面title中内容进行截取,{*ac*}和{*au*}能替换成 用户的昵称
    其实就是类似个人空间的用户动态内容的现实内容。
      

  5.   

    主要是为处理title子段中的特殊内容{*ac*}和{*au*},而且每条记录都不尽相同的
      

  6.   

    在feed表加一个content列 把所要的内容插入对应类型的content不就行了
      

  7.   

    我这边在存储过程里:
     CREATE TABLE #t
     ( 
       feedID int,
       userID int,
       content varchar(300),
       lastdate date
     )
    在把获取的@txt 插入到#t里
    insert into #t(feedID,userID,content,lastdate  ) values (@feedID,@id ,@txt,@lastdate  )
    exec grank  @userid=‘1’
    已经能获得userid=“1”的表了。可这个表怎么通过feedID字段和feed表中ID建立关联呢。
    因为刚刚开始接触这些。很多地方都还不懂,望前辈不要闲我烦呀。。谢过了。