oracle 存储过程

1、使用循环

create or replace type msg_array as table of number;

create or replace procedure modifyage(m_array in msg_array)
as

begin

for i in 1..m_array.count loop

update users set age=age+1 where id=m_array(i);

end loop;

commit;

exception

when others then

rollback;

end modifyage;

2、定义数组,并在java代码中调用

https://www.cnblogs.com/iyoume2008/p/6139925.html

3、oracle 存储过程当中嵌套函数定义

https://blog.csdn.net/weihongrao/article/details/10509699

---------------------------------------------------------------------------

create or replace procedure checks(firstNum in number)
is
secondNum number:=3;
str_arr varchar2(32676):='3,1,2';
function checkScore return number is
secondNum number:=-100;
begin
if checks.firstNum<=50
then
return secondNum;
else
return checks.secondNum;
end if;
end;

function returnString return varchar2 is
str_result varchar2(32676):='select * from dual';
begin
for i in 1..secondNum loop
if(REGEXP_SUBSTR(str_arr,'[^,]+',1,i)=1) then
str_result :=str_result || ' union all select 1 from dual';
elsif (REGEXP_SUBSTR(str_arr,'[^,]+',1,i)=2) then
str_result :=str_result || ' union all select 2 from dual';
elsif (REGEXP_SUBSTR(str_arr,'[^,]+',1,i)=3) then
str_result :=str_result || ' union all select 3 from dual';
end if;
end loop;
return str_result;
end;

procedure test is
begin
--dbms_output.put_line('this is defined in declare');
for i in 1..secondNum loop
dbms_output.put_line('this is defined in declare');
end loop;
end test;
begin
--dbms_output.put_line(checkScore);
--test;
dbms_output.put_line(returnString);
end checks;

posted @ 2018-07-04 02:45  ZeroMZ  阅读(147)  评论(0编辑  收藏  举报