游标是指向某个数据集的指针,该指针能够在该数据集合中进行移动并操做数据的对象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('大海','张雨生');