create or replace procedure test5(o_cellphone in varchar2) is
v_cellphone cc_quiz_stat.cellphone %type;
v_name cc_quiz_stat %rowtype;
v_state cc_quiz_stat.state %type;
begin
declare
cursor cur_cc is
select * from cc_quiz_stat;
cursor cur_jc(v_n varchar2) is
select state from cc_quiz_stat;
begin
open cur_cc;
loop
fetch cur_cc
into v_name;
exit when cur_cc%notfound;
open cur_jc(o_cellphone);
loop
fetch cur_jc
into v_state;
exit when cur_jc %notfound;
if (o_cellphone = v_name.cellphone) then
return;
else
dbms_output.put_line('手機號' || v_name.cellphone || '省份' ||
v_state);
end if;
end loop;
close cur_jc;
end loop;
close cur_cc;
end;
end test5;
執行結果
手機號18900000000省份全國
手機號18900000000省份南京
手機號18900000000省份天津
手機號18900000000省份 上海
手機號18900000000省份北京
create or replace procedure test5(o_cellphone in varchar2) is
v_cellphone cc_quiz_stat.cellphone %type;
v_name cc_quiz_stat %rowtype;
v_state cc_quiz_stat.state %type;
begin
declare
cursor cur_cc is
select * from cc_quiz_stat;
cursor cur_jc(v_n varchar2) is
select state from cc_quiz_stat;
begin
open cur_cc;
loop
fetch cur_cc
into v_name;
exit when cur_cc%notfound;
open cur_jc(o_cellphone);
loop
fetch cur_jc
into v_state;
exit when cur_jc %notfound;
if (o_cellphone = v_name.cellphone) then
exit;
else
dbms_output.put_line('手機號' || v_name.cellphone || '省份' ||
v_state);
end if;
end loop;
close cur_jc;
end loop;
close cur_cc;
end;
end test5;
執行結果
手機號18900000000省份全國
手機號18900000000省份南京
手機號18900000000省份天津
手機號18900000000省份 上海
手機號18900000000省份北京
手機號18900000002省份全國
手機號18900000002省份南京
手機號18900000002省份天津
手機號18900000002省份 上海
手機號18900000002省份北京
手機號18900000003省份全國
手機號18900000003省份南京
手機號18900000003省份天津
手機號18900000003省份 上海
手機號18900000003省份北京
手機號18900000004省份全國
手機號18900000004省份南京
手機號18900000004省份天津
手機號18900000004省份 上海
手機號18900000004省份北京
return 跳出整個迴圈,本迴圈後面的不再執行,
exit 跳出本次迴圈,下次繼續執行本次迴圈
oracle儲存過程中is和as區別
一直糾結於儲存過程的is與as最近在網上查了巨多資料,總結如下 在儲存過程 procedure 和函式 function 中沒有區別 在檢視 view 中只能用as不能用is 在游標 cursor 中只能用is不能用as。從其定義也可以看出沒什麼區別,要是有估計暫時也很少有人發下 create or...
儲存過程中呼叫儲存過程
use northwind go 儲存過程1 功能 通過員工firstname inputempfirstname 獲得 員工id outid if exists select name from sysobjects where name p getempleeidbyname and type ...
Oracle儲存過程中的異常處理
1.問題 oracle中可以用dbms output.put line來列印提示資訊,但是很容易緩衝區就溢位了。可以用dbms output.enable 1000000 來設定緩衝區的大小。但是有大小,就有可能再溢位 程式寫得太爛,錯誤不斷,不好意思 於是想把異常資訊寫到乙個表中。2.建表 這個容...