Oracle 中, table()簡單應用,其實就是當做內存表啦

create or replace type line_mo aS Object(
  i number(8),
  line varchar2(25),
  mo varchar2(25)
);

CREATE OR REPLACE TYPE tbLineMo AS TABLE OF line_mo;

CREATE OR REPLACE PROCEDURE testTb IS
tb tblinemo := tblinemo();
-- ii NUMBER(8);
BEGIN
  tb.EXTEND();
  tb(tb.COUNT) := line_mo(1, 'a', 'a');
  tb.EXTEND();
  tb(tb.COUNT) := line_mo(2, 'b', 'b');
  FOR x IN (SELECT * FROM TABLE(tb)) LOOP
    dbms_output.put_line('i='||x.i);
  END LOOP;
-- SELECT i INTO ii FROM TABLE(tb);
-- dbms_output.put_line('i='||ii);
EXCEPTION
  WHEN others THEN
    ROLLBACK;
END;

--測試
CALL testTb();

 

posted @ 2012-06-13 15:26  暴走  阅读(165)  评论(0)    收藏  举报