--存储指定数据库中的表名
CREATE TABLE T(ID INT IDENTITY(1,1),T_NAME VARCHAR(100) NULL,rc int null)
--存储指定表的所有列名
CREATE TABLE T_c(ID INT IDENTITY(1,1),T_c VARCHAR(100) NULL,t_t varchar(20) null)
declare @t varchar(300) --表名
declare @t_c varchar(20)--栏位名称
declare @t_T varchar(20)--栏位所属表名
declare @sql varchar(8000)
/*******************************
处理思路:取出数据库中所用的表,外循环每个表
取表的所用列,内循环每个列是否有合符条件的数据,
有则保存该表名
*******************************/
--具体的实现细节如下:
declare cur_test cursor FOR select NAME from sysobjects where type='u'
open cur_test
fetch cur_test into @t
while @@fetch_status=0
BEGIN
insert into t_c(t_c,t_t) select name,@T from syscolumns where id=object_id(@t)
declare cur_c cursor for select t_c,t_t from t_c
open cur_c
fetch cur_c into @t_c,@t_t
while @@fetch_status=0
begin
set @sql=isnull(@sql,'')+'insert into t(t_name )select '''+@t_t+''' from '+ @t_t+' as a where exists(select * from '+@t_t+' where a.ID ='+@t_t+'.ID AND '+ @t_c+' like ''%贵在坚持%'')'
print @sql
exec(@sql)
set @sql=''
fetch cur_c into @t_c,@t_t
end
close cur_c
deallocate cur_c
truncate table t_c
fetch cur_test into @t
end
CLOSE cur_test
DEALLOCATE cur_test