oracle 存储过程和函数例子

时间:2022-06-30 08:14:25
关于 游标 if,for 的例子 
create or replace procedure peace_if 
is 
cursor var_c is select * from grade; 
begin 
for temp in var_c loop 
if temp.course_name = 'OS' then 
dbms_output.put_line('Stu_name = '||temp.stu_name); 
elsif temp.course_name = 'DB' then 
dbms_output.put_line('DB'); 
else 
dbms_output.put_line('feng la feng la '); 
end if; 
end loop; 
end; 
---关于游标 for,case 的例子1 
create or replace procedure peace_case1 
is 
cursor var_c is select * from test_case; 
begin 
for temp in var_c loop 
case temp.vol 
when 1 then 
dbms_output.put_line('haha1'); 
when 2 then 
dbms_output.put_line('haha2'); 
when 3 then 
dbms_output.put_line('haha3'); 
when 4 then 
dbms_output.put_line('haha4'); 
else 
dbms_output.put_line('qita'); 
end case ; 
end loop; 
end; 
---关于游标 for,case 的例子2 
create or replace procedure peace_case2 
is 
cursor var_c is select * from test_case; 
begin 
for temp in var_c loop 
case 
when temp.vol=1 then 
dbms_output.put_line('haha1'); 
when temp.vol=2 then 
dbms_output.put_line('haha2'); 
when temp.vol=3 then 
dbms_output.put_line('haha3'); 
when temp.vol=4 then 
dbms_output.put_line('haha4'); 
else 
dbms_output.put_line('qita'); 
end case ; 
end loop; 
end; 
---关于for 循环的例子 
create or replace procedure peace_for 
is 
sum1 number :=0; 
temp varchar2(500); 
begin 
for i in 1..9 loop 
temp := ''; 
for j in 1 .. i 
loop 
sum1 := i * j; 
temp := temp||to_char(i) || ' * ' ||to_char(j) ||' = ' ||to_char(sum1) ||' '; 
end loop; 
dbms_output.put_line(temp ); 
end loop; 
end; 
---关于 loop循环的例子 
create or replace procedure peace_loop 
is 
sum1 number := 0; 
temp number :=0 ; 
begin 
loop 
exit when temp >= 10 ; 
sum1 := sum1+temp; 
temp := temp +1; 
end loop; 
dbms_output.put_line(sum1 ); 
end; 

---关于游标和loop循环的例子 
create or replace procedure loop_cur 
is 
stu_name varchar2(100); 
course_name varchar2(100); 
cursor var_cur is select * from grade ; 
begin 
open var_cur; 
loop 
fetch var_cur into stu_name,course_name; 
exit when var_cur%notfound; 
dbms_output.put_line(stu_name|| course_name); 
end loop; 
close var_cur; 
end; 
---关于异常处理的例子 
create or replace procedure peace_exp(in1 in varchar2) 
is 
c_n varchar2(100); 
begin 
select course_name into c_n from grade where stu_name = in1; 
dbms_output.put_line(c_n); 
exception 
when no_data_found 
then 
dbms_output.put_line('try'); 
when TOO_MANY_ROWS 
then 
dbms_output.put_line('more'); 
end; 

---关于异常处理的例子2 
create or replace procedure peace_insert ( c_n in varchar2) 
is 
error EXCEPTION; 
begin 
if c_n = 'OK' 
then 
insert into course (course_name) values (c_n); 
elsif c_n = 'NG' then 
insert into course (course_name) values (c_n); 
raise error; 
else 
Dbms_Output.put_line('c_n' || c_n); 
end if; 
commit; 
exception 
when error then 
rollback; 
Dbms_Output.put_line('ERRO'); 
end; 
---关于包的例子 定义包 
create or replace package peace_pkg 
as 
function test1(in1 in varchar2) 
return number; 
procedure test2 (in2 in varchar2); 
end peace_pkg; 
---关于包的例子 定义包体 
create or replace package body peace_pkg 
as 
function test1(in1 in varchar2) 
return number 
as 
temp number; 
begin 
temp := 0; 
return temp; 
end; 
procedure test2 (in2 in varchar2) 
is 
begin 
dbms_output.put_line(in2); 
end; 
end peace_pkg;