1  /  1  页   1 跳转 查看:985

标题: 请各位达人帮忙看看那里出错了!

请各位达人帮忙看看那里出错了!

采集了许多新闻,可是遇到有分页的采集的结果里就会出现,"本新闻共%页,当前第%页....."这类讨厌的字,
所以想写个过程替换之,可是过程写出来了,我检查过了没有错误,就是创建不起来...搞了半天,头昏脑胀,呕吐不止啊
特来向各位达人求救,还望不吝赐教!感激涕淋!!![em06]



create proc test1
as
begin
declare @i int
declare @j int
declare @ii int
declare @jj int
declare @id int
declare @ptr binary(16)
select @i = 0
select @j = 0
select @ii = 0
select @jj = 0
if( EXISTS(SELECT name from sysobjects where name='test_news' and xtype='u') )
begin
delete test_news
insert into test_news select * from fs_news order by id
end
else
begin
    select * into test_news from fs_news order by id
end
select * into #fs_news from fs_news where 1=2


-- EXEC sp_dboption 'test_news', 'select into/bulkcopy', 'true'
-- EXEC sp_dboption 'fs_news', 'select into/bulkcopy', 'true'


declare  cur cursor for
select id from test_news
open cur
fetch cur into @id
while (@@fetch_status <> -1)
begin
    select @i = 0
    while(1=1)
    begin    -- 去掉本条记录的所有要删除字段开始
  select @i = patindex('%<p>本新闻共6页%',content) from test_news  where id =@id
  if(@i>0)
  begin
        -- 去掉本条记录的第一个要删除字段开始
      -- 求尾的位置(</p>的位置)开始
      select @j=0
            delete #fs_news
            insert into #fs_news select * from test_news where id = @id
            select @ii = 0
      while(1=1)
      begin
                select @jj = 0
          select @jj = patindex('%</p>%',content) from #fs_news
                select @ii = @ii + @jj + 4
          if (@jj> 0)
                begin
                if(@ii < @i)
          begin
              select @ptr = TEXTPTR(content) from #fs_news
                    select @jj = @jj + 4
              updatetext #fs_news.content @ptr 0 @jj
                    end
                    else
                    begin
                        select @j = @ii
                        break
                    end
          end
          else
          begin
                select @j = 0
          break
          end
      end
      -- 求尾的位置(</p>的位置)结束
            if( @j > @i )
            begin
            select @j=@j-@i  -- 查找的字符串的长度
      -- 更新#fs_news1表开始
      select @ptr=textptr(content) from test_news where id=@id
                select @i = @i - 1
      updatetext test_news.content @ptr @i @j ''
      -- 更新#fs_news1表结束
                -- 去掉本条记录的第一个要删除字段结束
              continue    -- 去掉本条记录的下一个要删除字段
            end
            else
            begin
        break    -- 去掉下一个记录
            end
  end
        else
        begin
            -- 本条记录处理结束,去处理下一条记录(跳出本条记录循环)
            break
        end
    end
-- 移动光标,处理下一条记录
fetch cur into @id
end
close cur
deallocate cur


-- EXEC sp_dboption 'test_news', 'select into/bulkcopy', 'false'
-- EXEC sp_dboption 'fs_news', 'select into/bulkcopy', 'false'
select '请到test_news表中查找更新后的数据'

引用
 

自己解决了,谢谢大家!!!!!![em01]
引用
 
1  /  1  页   1 跳转

版权所有 Foosun.NET  NewsCMS.com  NewsIDC.COM  Sitemap

Powered by Discuz!NT 2.0.1115    Copyright © 2001-2008 Comsenz Inc.
Processed in 0 second(s) (Cached).
返顶部