create or replace p_temp_procedure
(
    cur_arg out sys_refcursor;     --方法1
)
asv_sum float;  --要传出的值begin    --这个v_sum 是通过循环计算得到的,
   -- 有两重循环,第一重循环每个都产生一个 v_sum;
   --怎么把这个 v_sum  保存出来
    
end存储过程返回列表?保存到游标里面,只能保存最后一次的值,前面的值都被覆盖了。

解决方案 »

  1.   

    每一个循环里产生的v_sum都要保存吗?
    如果这样的话 可以建个表,在循环里把v_sum插入到表里
      

  2.   

    现在,可以返回数组,但是java调用时候报错
      

  3.   

    楼主你这个是什么意思?创建的到底是procedure 还是
    create or replace p_temp_procedure
    如果要保存每次循环产生的v_sum,最好用临时表来存储每次循环的值。
      

  4.   

    # CREATE TYPE t_arr AS OBJECT(
    # id NUMBER ,
    # name varchar2(20)
    # );
    #
    # CREATE type t_arr_re as table of t_arr; 这样写不对吗
      

  5.   

    看我回的帖子 调用赋给嵌套表http://topic.csdn.net/u/20101026/15/79c58367-7376-4a62-8abe-ed35b9090d11.html?9788
      

  6.   

    参考一下数组的用法。http://blog.csdn.net/inthirties/archive/2009/08/03/4400905.aspx
      

  7.   

    参考一下数组的用法。http://blog.csdn.net/inthirties/archive/2009/08/03/4400905.aspx如这个理面讲的 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;
      java 调用存储过程怎么返回  v_rec  这个  table  类型的变量啊
      

  8.   

    java 没学过
    java应该也有数组的  
      

  9.   


    SQL> CREATE OR REPLACE TYPE Person AS OBJECT  
      2  (  
      3    p_code VARCHAR2(32),  
      4    p_name VARCHAR2(16),  
      5    p_age NUMBER,  
      6    p_birthday DATE  
      7  ); 
      8  /类型已创建。SQL> CREATE OR REPLACE TYPE person_table_type IS TABLE OF Person; 
      2  /类型已创建。SQL> create table person_tab of  Person --建立对象表
      2  /表已创建。
    SQL> CREATE OR REPLACE PROCEDURE testtableofobject(v_table OUT person_table_type) IS  
      2  BEGIN  
      3    v_table := person_table_type();  
      4    FOR i IN 1 .. 5 LOOP  
      5    v_table.EXTEND;  
      6    v_table(i) := NEW person('45212319880810435' || i,  
      7    '侯廷文' || i,  
      8    20 + i,  
      9    to_date('1985-08-1' || i, 'YYYY-MM-DD'));  
     10    END LOOP;  
     11  END testtableofobject; 
     12  /过程已创建。--调用
    SQL> declare
      2  person_tb person_table_type;
      3  begin
      4  testtableofobject(person_tb);
      5  forall i in 1..person_tb.count
      6  insert into person_tab values person_tb(i);
      7  end;
      8  /PL/SQL 过程已成功完成。SQL> commit;提交完成。SQL> select * from person_tab;P_CODE                           P_NAME                P_AGE P_BIRTHDAY
    -------------------------------- ---------------- ---------- --------------
    452123198808104351               侯廷文1                  21 11-8月 -85
    452123198808104352               侯廷文2                  22 12-8月 -85
    452123198808104353               侯廷文3                  23 13-8月 -85
    452123198808104354               侯廷文4                  24 14-8月 -85
    452123198808104355               侯廷文5                  25 15-8月 -85