遊標是指向某個數據集的指針,該指針能夠在該數據集合中進行移動並操做數據的對象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('大海','張雨生');