in,out具体是什么意思在网上很容易找到,调用存储过程也比较简单。下面看下调用in,out参数的存储过程
带返回参数的存储过程调用:
Declare
Sum int;
Begin
Tt_add(12,12,sum);--12是in类型参数,sum是out类型的参数,经过调用存储过程,sum的值就会随之改变
Dbms_output.put_line(sum);
End;

解决方案 »

  1.   


    通过以下的例子你可以很清楚知道他们之间的差别
    in:
    CREATE OR REPLACE PROCEDURE TEST_1(P1 IN NUMBER) IS
    BEGIN
      IF P1 > 0 THEN
        DBMS_OUTPUT.PUT_LINE('>0');
      ELSE
        DBMS_OUTPUT.PUT_LINE('<=0');
      END IF;
    END TEST_1;out:
    CREATE OR REPLACE PROCEDURE TEST_1(P1 OUT NUMBER) IS
      I NUMBER;
    BEGIN
      I := 5;
      IF I > 0 THEN
        DBMS_OUTPUT.PUT_LINE('>0');
      ELSE
        DBMS_OUTPUT.PUT_LINE('<=0');
      END IF;
      P1 := I;
    END TEST_1;in out:
    CREATE OR REPLACE PROCEDURE TEST_1(P1 IN OUT NUMBER) IS
      I NUMBER;
    BEGIN
      I := 5;
      IF P1 > 0 THEN
        DBMS_OUTPUT.PUT_LINE('>0');
        P1 := P1 + I;
      ELSE
        DBMS_OUTPUT.PUT_LINE('<=0');
        P1 := P1 - I;
      END IF;
    END TEST_1;
      

  2.   

    in:表示参数是输入给过程的。
    out:表示参数在过程中将被赋值,可以传给过程的外部。
    in out :表示该类型的参数既可以向过程体传值,也可以在过程体中赋值。create or replace procedure totalcredit
     (xh in varchar2) as
      xf number;
    begin
      select zxf
        into xf
        from xsb
       where XH = xh
         and rownum = 1;
      dbms_output.put_line(xf);
    end;
    create or replace procedure count_grade
     (zy in char, person_num out number) as
    begin
      select count(XH)
        into person_num
        from XSB
       where ZY = zy
         and ZXF > 40;
    end;
      

  3.   

    IN表示向存储过程传递参数,
    OUT表示从存储过程返回参数,
    IN OUT 表示传递参数和返回参数;
      

  4.   

    IN :输入参数,将此变量的值传给存储过程
    OUT:输出参数,存储过程给次变量赋值,调用完存储过程,此参数可以取到值
    IN OUT:输入输出参数,此参数能够将值传递给存储过程,并能够在过中被赋值,外面可以取到值简单事例:
    --存储过程
    create procedure sp_test(A in number,B in out number,C out number)
    is
    v_sum number;
    begin 
      C := A - B;
      v_sum := A + B;
      B := v_sum;
    end sp_test;
    --调用
    declare 
    v_A number:=20;
    v_B number:=10;
    v_C number;
    begin
    sp_test(v_A,v_B,v_C);
    dbms_output.put_line('B='||v_B);
    dbms_output.put_line('C='||v_C);
    end;
    --输出结果
    B=30
    C=10