1. 程式人生 > >SQL之遊標和臨時表

SQL之遊標和臨時表

今天使用了遊標來進行兩個表之間的資料比較,並用臨時表記錄。做個記錄以便使用。。

<p>
DECLARE
@id int,
@name varchar(50),
@sex varchar(50),
@class varchar(50),
@type varchar(50),
@message varchar(80)</p><p>--定義遊標
DECLARE titles_cursor CURSOR FOR 
   SELECT ta.*
   FROM tb1 ta, tb2 t
   WHERE ta.cname = t.cname 
--AND
  -- ta.au_id = @au_id   -- Variable value from the outer cursor</p><p>--如果臨時表已存在,刪除
   if object_id('tempdb..#TableInfo') is not null  
    begin  
        drop table #TableInfo    
   end   
--建立臨時表
   create table #TableInfo(tid int,tname varchar(50),tsex varchar(50),tclass varchar(50),ttype varchar(50))
--開啟遊標並賦值
   OPEN titles_cursor
   FETCH NEXT FROM titles_cursor INTO @id,@name,@sex</p><p>   IF @@FETCH_STATUS <> 0 
      PRINT '<<No Data>>'   </p><p> </p><p>   WHILE @@FETCH_STATUS = 0
   BEGIN
      
       SELECT @message = '' + @name
       PRINT @message
--向臨時表插入資料
      insert into #TableInfo values(@id,@name,@sex,@class,@type)</p><p>     -- PRINT @message
      FETCH NEXT FROM titles_cursor INTO @id,@name,@sex
   
   END
--關閉遊標
   CLOSE titles_cursor
--釋放遊標
   DEALLOCATE titles_cursor</p><p>select * from #TableInfo
</p>