• UpdateText 使用


    Create proc [dbo].[UpdateTextColumn]

    @Table varchar(100),

    @Columns varchar(200),--eg:Column1,Column2,

    @old varchar(100),

    @new varchar(100)

    as

        
    set nocount on

        
    declare @sql nvarchar(2000)

        
    declare @Column varchar(50)

        
    declare @cpos int,@npos int

        
    set @cpos=1;

        
    set @npos=1;

        
    set @npos=charindex(',',@Columns,@cpos);

        
    while(@npos>0)

        
    begin

            
    set @Column = substring(@Columns,@cpos,@npos-@cpos);

            
    set @cpos = @npos+1

            
    set @npos=charindex(',',@Columns,@cpos);

            

            
    set @sql = 'update '+@Table+' set '+@Column+'=replace(cast('+@Column+' as varchar(8000)),@old,@new) where Datalength('+@Column+')<=8000';

            
    EXECUTE sp_executesql @Sql,

                               N
    '@old varchar(100),@new varchar(100)',

                               
    @old,

                               
    @new

            
    declare @ptr binary(16) ,@offset int,@dellen int

            

            
    set @dellen = len(@old)

            

            
    set @offset = 1

            
    while @offset>=1

            
    begin

                
    set @offset = 0

                
    set @sql = 'select     top 1 @offset = charindex('''+@old+''' , '+@Column+'), @ptr = textptr('+@Column+') from '+@Table+' where Datalength('+@Column+')>8000 and '+@Column+' like ''%'+@old+'%''';

                
    EXEC sp_executesql @Sql,N'@offset int OUTPUT,@ptr binary(16) OUTPUT,@old varchar(100)',

                                   
    @offset OUTPUT,@ptr OUTPUT,@old;

               
    if @offset > 0

                
    begin

                    
    set @offset = @offset-1

                    
    set @sql='updatetext '+@Table+'.'+@Column+' @ptr @offset @dellen @new';

                    
    EXEC sp_executesql @Sql,N'@offset int ,@ptr binary(16),@dellen int,@new varchar(100)',@offset,@ptr,@dellen,@new;

                
    end 

            
    end

    end

    go

    使用方法:exec UpdateTextColumn @tbname,@column,@old,@new
  • 相关阅读:
    Oracle SQL FAQ
    miniasp(no encode)
    请看用javascript设置和读取cookie的简单例子
    asp流下载(Stream)
    (企业公司)网站开发方案
    asp发消息并代多个附件上传(多对多关系)
    tabpage1
    crystal report (asp调用水晶报表实例)
    上海万千文化传播有限公司(网站项目策划书)
    访问和更新Cookies集合
  • 原文地址:https://www.cnblogs.com/craig/p/1222795.html
Copyright © 2020-2023  润新知