oracle 存储过程和函数例子

关于 游标 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;

posted @ 2013-08-08 14:49  天空之上、只有蓝黑  阅读(127)  评论(0)    收藏  举报