存储过程无返回值 
函数必须有且只有一个返回值。。是这样的吗??有多个返回值的吗

解决方案 »

  1.   

    不能说存储过程没有返回值 只是说它不能用return来返回值,它可以有out参数 如果想返回多个值的话可以用存储过程多个out参数
      

  2.   

    存儲過程沒有return形式的返回,但可以通過OUT或IN OUT模式的參數來實現返回值的功能;
    函數必須有且只有一個返回值。如,
    create or replace procedure p123(n1 number, n2 out number, n3 out number) is
    begin
      n2 := n1 * n1; -- 平方
      n3 := n2 * n1; -- 立方
    end;declare
      p1 number := 3;
      p2 number;
      p3 number;
    begin
      p123(p1, p2,p3);
      dbms_output.put_line('p1 = ' || p1);
      dbms_output.put_line('p1的平方 = ' || p2);
      dbms_output.put_line('p1的立方 = ' || p3);
    end;p1 = 3
    p1的平方 = 9
    p1的立方 = 27
      

  3.   

    存儲過程沒有return形式的返回,但可以通過OUT或IN OUT模式的參數來實現返回值的功能;
    要返回多值的话,可以用多个out,或用动态游标等
    函數必須有一个return返回值,同样也有out和in out参数。
      

  4.   

    过程可以返回多个比如下面
    --一个简单的例子
    SQL> create or replace procedure p_record(rec out sys_refcursor
      2  )
      3  as
      4  begin
      5  open rec for select empname from emp;
      6  end;
      7  /过程已创建。SQL> edi
    已写入 file afiedt.buf  1  declare
      2  type v_rec_type is table of emp.empname%type;
      3  v_rec v_rec_type;
      4  rec sys_refcursor;
      5  begin
      6  p_record(rec);
      7  fetch rec bulk collect into v_rec;
      8  for i in 1..v_rec.count loop
      9  dbms_output.put_line(v_rec(i));
     10  end loop;
     11  close rec;
     12* end;
    SQL> /
    sunny
    wkc168
    SCOTT
    SMITH
    CLERKPL/SQL 过程已成功完成。