您好,登錄后才能下訂單哦!
create table T1 ( sex varchar2 ( 10 ), name varchar2 ( 20 ));
insert into t1 values ( ' 男 ' , ' 小劉 ' );
insert into t1 values ( ' 女 ' , ' 小陳 ' );
insert into t1 values ( ' 女 ' , ' 曉燕 ' );
insert into t1 values ( ' 女 ' , ' 小紅 ' );
commit ;
select * from t1 ;
DECLARE
CURSOR c_t1_cursor is select sex , name from t1 where sex= ' 女 ' ;
v_sex t1 . sex %type ;
v_name t1 . name %type ;
begin
open c_t1_cursor ;
loop
fetch c_t1_cursor into v_sex , v_name ;
exit when c_t1_cursor%notfound ;
print ( v_name|| ' is ' ||v_sex );
end loop ;
close c_t1_cursor ;
end ;
注:游標的定義要在匿名塊的定義部分定義,游標打開、提取數據、關閉都在執行部分。
語法:
CURSOR cursor_name
[(parameter_name datatype, ...)]
IS
select_statement;
......
OPEN cursor_name(parameter_value,.....) ;
DECLARE
CURSOR c_t1_cursor ( c_sex varchar2 ( 10 )) is select sex , name from t1 where sex=c_sex ;
v_sex t1 . sex%type ;
v_name t1 . name%type ;
begin
open c_t1_cursor ( ' 男 ' );
loop
fetch c_t1_cursor into v_sex , v_name ;
exit when c_t1_cursor%notfound ;
print ( v_name|| ' is ' ||v_sex );
end loop ;
close c_t1_cursor ;
end ;
注:open c_t1_cursor(' 男') 也可以改為 open c_t1_cursor ( &sex );
語法:
FOR record_name IN cursor_name|select_statement LOOP
statement1;
statement2;
......
END LOOP;
begin
for t1_record in ( select sex , name from t1 where sex= ' 女 ' ) loop
print ( t1_record . name|| ' is ' ||t1_record . sex );
end loop ;
end ;
語法:
TYPE ref_type_name IS REF CURSOR [RETURN return_type];
cursor_variable ref_type_name;
ref_type_name :用于指定自定義類型名
RETURN :用于指定返回結果的數據類型
cursor_variable :用于指定游標變量名
DECLARE
TYPE t1_cursor IS REF CURSOR ;
my_cursor t1_cursor ;
v_sex t1 . sex%type ;
v_name t1 . name%type ;
begin
OPEN my_cursor FOR select sex , name from t1 where sex= ' 女 ' ;
LOOP
FETCH my_cursor INTO v_sex , v_name ;
EXIT WHEN my_cursor%NOTFOUND ;
print ( v_name|| ' is ' ||v_sex );
end loop ;
close my_cursor ;
end ;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。