oracle 存储过程和函数例子

作者:peace.zhao

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

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐