Oracle10g遊標操做

 遊標是指向某個數據集的指針,該指針能夠在該數據集合中進行移動並操做數據的對象ide

 
* 保存結果集數據
 
* 取得結果集數據
 
* 遊標 
 
       * 聲明遊標 declare cursor student_query_cur is select * from student ;
 
       * 打開遊標 open student_query_cur;
 
       * 操做遊標 fetch student_query_cur into record;//從遊標裏取一行記錄賦值給record變量
 
       * 關閉遊標 close student_query_cur;
 
  * 遊標經常使用屬性 %ISOPEN 是否打開
                 %FOUND 是否能夠提取到數據
                 %NOTFOUND 提取不到數據
                 %ROWCOUNT記載已經被提取的行數
 
  * SQL遊標(系統中聲明的遊標)
---------------------------------------------------------------------
 
CREATE OR REPLACE PROCEDURE MUSICQUERY(musicid in int) 
as 
begin 
--聲明使用遊標   
declare     
  
  cursor music_sets is select * from music where id!=musicid;   
     
 --聲明變量保存查詢的結果   
   music_record music%ROWTYPE;   
    
begin  
     
 -- 打開遊標   
   
    open music_sets;   
  
  -- 若是是結果集中含有多行記錄,則須要使用 ..loop循環  
    
  loop  
  
    --若是遊標無數據可取則退出loop  
   if(music_sets %NOTFOUND) then exit;end if;       
  
  
  -- 判斷遊標是否已經打開   
   -- if(music_sets %ISOPEN) then  
     
  
    --若是遊標中能夠取得數據  
    --  if(music_sets %FOUND) then  
      fetch music_sets into music_record;   
      dbms_output.put_line('音樂標題:'||music_record.title||' '||'演唱:'||music_record.artist);   
    --  end if;  
  
     
  --  end if;  
  
  end loop;   
   
-- 關閉遊標   
   close music_sets;   
     
 end;  
  
end;
 
 
------------------------------------------------------------------------------------------
--show errors ;
create table music(id number not null primary key ,title varchar2(20),artist varchar2(20));
 
insert into music values(1,'大海','張雨');
 
commit ;
 
CREATE OR REPLACE PROCEDURE UPDATEMUSIC(name in varchar2,author in varchar2) 
as 
begin 
update music set artist=author where title like ('%'||name||'%'); 
dbms_output.put_line(SQL %ROWCOUNT);  --返回受上一語句影響的行數
end; 
/
 
exec UPDATEMUSIC('大海','張雨生');
相關文章
相關標籤/搜索