数据库的全文查找

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
--The  Author : <£Mιяаçιе_ξкч>
--Create date : <£2012-06-13 09:37:58>
--Description : <£全文查找数据>
-- Exec FIND 'CST_ID','LC12060010'
-- =============================================
CREATE PROCEDURE FIND
 -- Add the parameters for the stored procedure here
  @FindFieldsWordColumn Nvarchar(20)='CST_ID'
 ,@FindFieldsValue   Nvarchar(20)
AS
BEGIN
 SET NOCOUNT ON;             
 
 Create  TABLE #TempTable (FindValues Nvarchar(MAX))
        
 DECLARE MyCursor CURSOR 
  FOR 
  SELECT TOP 50  'SELECT @ReturnVlaue= '+@FindFieldsWordColumn+' FROM ' +B.NAME + ' WHERE '+@FindFieldsWordColumn+' = '''+@FindFieldsValue+''''   as WillFindWords FROM SYS.SYSCOLUMNS AS A JOIN SYS.OBJECTS AS B ON A.ID=B.OBJECT_ID
 WHERE A.NAME =@FindFieldsWordColumn AND B.TYPE='U' and  B.NAME like 'CROSS_%';--与你的数据库统一命名有关

 --打开一个游标 
 OPEN MyCursor;
 --循环一个游标
 DECLARE @SQLWords nvarchar(200);
  FETCH NEXT FROM  MyCursor INTO @SQLWords;
 WHILE @@FETCH_STATUS =0
  BEGIN
  --Print @SQLWords;
    declare @paramstring nvarchar(200)
   declare @output_result nvarchar(200)='';
   set @paramstring='@ReturnVlaue nvarchar(200) output' 
   exec sp_executesql @SQLWords,@paramstring,@ReturnVlaue =@output_result output
   --Print @output_result
   IF  @output_result =@FindFieldsValue
   Begin
    Print  REPLACE(@SQLWords,'@ReturnVlaue=','') 
    Insert into #TempTable
    Select REPLACE(@SQLWords,'@ReturnVlaue=','')
   end
   FETCH NEXT FROM  MyCursor INTO @SQLWords;
  END 
 --关闭游标
 CLOSE MyCursor
 --释放资源
 DEALLOCATE MyCursor 
 Select * from #TempTable

 Grop Table #TempTable
 END
GO

posted @ 2012-06-13 09:59  Miracle_Sky  阅读(211)  评论(0编辑  收藏  举报