3,491
社区成员
发帖
与我相关
我的任务
分享
create or replace p_temp_procedure
(
cur_arg out sys_refcursor; --方法1
)
as
v_sum float; --要传出的值
begin
--这个v_sum 是通过循环计算得到的,
-- 有两重循环,第一重循环每个都产生一个 v_sum;
--
怎么把这个 v_sum 保存出来
end
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
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 类型的变量啊