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('大海','张雨生');
相关文章
相关标签/搜索