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 留言:哈哈
结果是:
某某 关注了 某某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 留言:哈哈
这样你就可以关联你这个feed表
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
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*}能替换成 用户的昵称
其实就是类似个人空间的用户动态内容的现实内容。
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建立关联呢。
因为刚刚开始接触这些。很多地方都还不懂,望前辈不要闲我烦呀。。谢过了。