过程中如何调用另一个带有返回值的过程,并想得到这个返回值

解决方案 »

  1.   

    --测试
    create or replace procedure sp_test(a int,b out int) is
    begin
     b:=a+1;
    end sp_test;--调用
    declare
    i int;
    begin
     sp_test( 1,i );
     dbms_output.put_line( i );
    end;
      

  2.   

    运行hongqi162兄弟代码是对的,不过我的过程中运行的是用dblink连接远端数据库的,
    请问一下能不能运行包含COMMIT字句的,带OUT值的procedure的远端过程
      

  3.   

    SQL> create or replace procedure p_test(a VARCHAR2,b out int) IS
      2  BEGIN
      3   IF a='Y' THEN
      4      DELETE FROM testuser.tab_test@db_link;
      5      b:=1;
      6      ELSE
      7       b:=0;
      8    END IF;
      9  END p_Test;
     10  /
     
    Procedure created
    SQL> set serveroutput on
     
    SQL> declare 
      2     b int;
      3    begin 
      4     p_test('Y',b);
      5     dbms_output.put_line(b);
      6   end ;
      7  /
      
      1
     
    PL/SQL procedure successfully completed
     
    SQL> 
      

  4.   

    SQL> create or replace procedure p_test(a VARCHAR2,b out int) IS
      2  BEGIN
      3   IF a='Y' THEN
      4      DELETE FROM testuser.tab_test@db_link;
      5      b:=1;
      6      ELSE
      7       b:=0;
      8    END IF;
      9    COMMIT;
     10  END p_Test;
     11  /
     
    Procedure created
     
    SQL> 
    SQL>   declare
      2        b int;
      3    begin
      4      p_test('Y',b);
      5      dbms_output.put_line(b);
      6    end ;
      7  /
     
    PL/SQL procedure successfully completed
     
    SQL> set serveroutput on
    SQL> /
     
    1
     
    PL/SQL procedure successfully completed
     
    SQL>