存储过程调用的问题

v_oneforever 2010-09-10 11:24:47
有这样一个存储过程A(KBN,NO)
kbn为1,2,3的时候有不同的逻辑。
当kbn为3的时候,有段逻辑跟1是一样的,我能在kbn为3里面调用A('1',NO)吗?
也就是存储过程自调
...全文
67 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
minitoy 2010-09-10
  • 打赏
  • 举报
回复

就当给我们送分吧
v_oneforever 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 minitoy 的回复:]

可以.但是你要保证别造成死循环的递归调用.
SQL code
SQL> create or replace procedure t_testt(i_num number)
2 as
3 v_num number(2);
4 begin
5
6 if i_num=1 then
7 select 1 into v_num from dual;
……
[/Quote]

我也试出来了
minitoy 2010-09-10
  • 打赏
  • 举报
回复
可以.但是你要保证别造成死循环的递归调用.
SQL> create or replace procedure t_testt(i_num number)
2 as
3 v_num number(2);
4 begin
5
6 if i_num=1 then
7 select 1 into v_num from dual;
8 dbms_output.put_line('level 2 ');
9 elsif i_num=2 then
10 dbms_output.put_line('level 1 ');
11 t_testt(1);
12 else
13 select 1 into v_num from dual;
14 end if;
15
16 end;
17 /

Procedure created

SQL> set serveroutput on
SQL> exec t_testt(2);

level 1
level 2

PL/SQL procedure successfully completed

SQL>
小灰狼W 2010-09-10
  • 打赏
  • 举报
回复
不能
但你可以将可重用的这部分代码写成一个子过程,放在声明部分,再调用
ojuju10 2010-09-10
  • 打赏
  • 举报
回复
你在存储过程里面对kbn为1,2,3做不同的业务处理吧

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧