用table类型作为参数

用table类型作为参数,首先要建立一个可公开调用的table类型才可以。为了便于维护,可放在package里
CREATE OR REPLACE PACKAGE pkg_test IS
  TYPE t_temp IS RECORD(
    tid   VARCHAR2(50),
    tname VARCHAR2(50),
    cou   VARCHAR2(50));
  TYPE tab IS TABLE OF t_temp INDEX BY BINARY_INTEGER;
  PROCEDURE p_test(t IN tab);
END pkg_test;
/
CREATE OR REPLACE PACKAGE BODY pkg_test IS
  PROCEDURE p_test(t IN tab) AS
  BEGIN
    FOR i IN 1 .. t.count LOOP
      dbms_output.put_line(t(i).tid || t(i).tname || t(i).cou);
    END LOOP;
  END p_test;
END pkg_test;
/

下面调用就可以了:
SQL> set serveroutput on
SQL> 
SQL> DECLARE
  2    CURSOR cr IS
  3      SELECT *
  4        FROM (SELECT '1TEST' tid, '1TEST' tname, '1TEST' cou
  5                FROM dual
  6              UNION ALL
  7              SELECT '2TEST' tid, '2TEST' tname, '2TEST' cou
  8                FROM dual
  9              UNION ALL
 10              SELECT '3TEST' tid, '3TEST' tname, '3TEST' cou
 11                FROM dual
 12              UNION ALL
 13              SELECT '4TEST' tid, '4TEST' tname, '4TEST' cou
 14                FROM dual) e;
 15    t pkg_test.tab;
 16  BEGIN
 17    OPEN cr;
 18    FETCH cr BULK COLLECT INTO t;
 19    CLOSE cr;
 20    pkg_test.p_test(t);
 21  END;
 22  /
1TEST1TEST1TEST
2TEST2TEST2TEST
3TEST3TEST3TEST
4TEST4TEST4TEST
PL/SQL procedure successfully completed


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值