[SQL]非法关键字处理使用的存储过程
2012-06-01 12:46
369 查看
USE [li]
GO
/****** 对象: StoredProcedure [dbo].[ReplaceKeywordOther] 脚本日期: 05/30/2012 14:59:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ReplaceKeywordOther]
@COLUMN VARCHAR(100),
@TABLE VARCHAR(100),
@CONTENT VARCHAR(100)
AS
SET nocount ON
Declare @KEYWORD NVARCHAR(50),@NEWWORD NVARCHAR(50),@KEYWORDTYPE NVARCHAR(50)
Declare @CnsbDataMaxCount int,@KeywordMaxCount int
Declare @CnsbDataNumber int,@KeywordNumber int
Declare @ReplaceSql nvarchar(2000)
Declare @Count int
print getdate()
print 'Start'
truncate table li.dbo.ReplaceRecordTemp
select @KeywordMaxCount=max(id) from li.dbo.IllegalKeyWordTemp
set @KeywordNumber=1
while @KeywordNumber<=@KeywordMaxCount
begin
select @KEYWORD=keyword,@NEWWORD=newword,@KEYWORDTYPE=keywordtype from li.dbo.IllegalKeyWordTemp where id=@KeywordNumber
exec('insert into li.dbo.ReplaceRecordTemp(ResultID,TableName,ColumnName,Keyword,NewWord,KeywordType) select '+@COLUMN+','''+@TABLE+''','''+@COLUMN+''','''+@KEYWORD+''','''+@NEWWORD+''','''+@KEYWORDTYPE+''' FROM '+@TABLE+' With(Nolock) where Contains('+@CONTENT+','''+@KEYWORD+''')')
SET @KeywordNumber=@KeywordNumber+1
end
select @CnsbDataMaxCount=max(id) from li.dbo.ReplaceRecordTemp
set @CnsbDataNumber=1
set @Count=0
while @CnsbDataNumber<=@CnsbDataMaxCount
begin
select @ReplaceSql='update '+@TABLE+' set '+@CONTENT+'=replace('+@CONTENT+','''+keyword+''','''+newword+''') where '+@COLUMN+'='+cast(ResultID as nvarchar(10)) from li.dbo.ReplaceRecordTemp where id=@CnsbDataNumber
Print @ReplaceSql
exec @ReplaceSql
set @CnsbDataNumber=@CnsbDataNumber+1
set @Count=@Count+1
if @Count>=100
begin
print getdate()
print 'waitfor'
waitfor delay '0:05'
set @Count=0
end
end
insert into li.dbo.ReplaceRecord0601(ResultID,TableName,ColumnName,Keyword,NewWord,KeywordType) select ResultID,TableName,ColumnName,Keyword,NewWord,KeywordType from li.dbo.ReplaceRecordTemp
print getdate()
print 'End'
GO
/****** 对象: StoredProcedure [dbo].[ReplaceKeywordOther] 脚本日期: 05/30/2012 14:59:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ReplaceKeywordOther]
@COLUMN VARCHAR(100),
@TABLE VARCHAR(100),
@CONTENT VARCHAR(100)
AS
SET nocount ON
Declare @KEYWORD NVARCHAR(50),@NEWWORD NVARCHAR(50),@KEYWORDTYPE NVARCHAR(50)
Declare @CnsbDataMaxCount int,@KeywordMaxCount int
Declare @CnsbDataNumber int,@KeywordNumber int
Declare @ReplaceSql nvarchar(2000)
Declare @Count int
print getdate()
print 'Start'
truncate table li.dbo.ReplaceRecordTemp
select @KeywordMaxCount=max(id) from li.dbo.IllegalKeyWordTemp
set @KeywordNumber=1
while @KeywordNumber<=@KeywordMaxCount
begin
select @KEYWORD=keyword,@NEWWORD=newword,@KEYWORDTYPE=keywordtype from li.dbo.IllegalKeyWordTemp where id=@KeywordNumber
exec('insert into li.dbo.ReplaceRecordTemp(ResultID,TableName,ColumnName,Keyword,NewWord,KeywordType) select '+@COLUMN+','''+@TABLE+''','''+@COLUMN+''','''+@KEYWORD+''','''+@NEWWORD+''','''+@KEYWORDTYPE+''' FROM '+@TABLE+' With(Nolock) where Contains('+@CONTENT+','''+@KEYWORD+''')')
SET @KeywordNumber=@KeywordNumber+1
end
select @CnsbDataMaxCount=max(id) from li.dbo.ReplaceRecordTemp
set @CnsbDataNumber=1
set @Count=0
while @CnsbDataNumber<=@CnsbDataMaxCount
begin
select @ReplaceSql='update '+@TABLE+' set '+@CONTENT+'=replace('+@CONTENT+','''+keyword+''','''+newword+''') where '+@COLUMN+'='+cast(ResultID as nvarchar(10)) from li.dbo.ReplaceRecordTemp where id=@CnsbDataNumber
Print @ReplaceSql
exec @ReplaceSql
set @CnsbDataNumber=@CnsbDataNumber+1
set @Count=@Count+1
if @Count>=100
begin
print getdate()
print 'waitfor'
waitfor delay '0:05'
set @Count=0
end
end
insert into li.dbo.ReplaceRecord0601(ResultID,TableName,ColumnName,Keyword,NewWord,KeywordType) select ResultID,TableName,ColumnName,Keyword,NewWord,KeywordType from li.dbo.ReplaceRecordTemp
print getdate()
print 'End'
相关文章推荐
- T-SQL 存储过程中使用事务并回滚出错的SQL语句(C#事务处理)
- SQL存储过程如何使用IN关键字
- 用SQL语句查找包含有某个关键字的存储过程、触发器、函数等(仅适用MS SQL SERVER)
- 使用CallableStatement处理Oracle数据库的存储过程
- SQL存储过程创建及事务处理
- 用SQL语句查找包含有某个关键字的存储过程、触发器、函数等等
- sql server 存储过程的使用
- 使用SQL执行带返回的存储过程
- sql存储过程传入ID集合,和临时表的使用
- [代码]如何使用为多个结果形状映射的存储过程(LINQ to SQL)
- 存储过程里面使用in变量列表异常的处理
- 存储过程系列之存储过程sql查询存储过程的使用
- CYQ.Data 轻量数据层之路 使用篇-MProc 存储过程与SQL 视频[最后一集] H (二十八)
- PL/SQL 调试存储过程(报错ora-01036 非法的变量名/编号)
- 存储过程中使用事务,sql server 事务,sql事务
- mysql 存储过程中使用动态sql
- sql存储过程中使用 output
- SQL 2005对使用with encryption加密的存储过程解密(转)
- 在存储过程里使用OleDB和Sql连接对于参数的区别
- SQL 存储过程里读取表内容 游标fetch的使用