自定义TABLE表记录怎样用Insert语句插入?我自己定义了一个记录型变量,又由这个变量做成一个TABLE表变量。然后想用INSERT 语句直接向这个TABLE变量里插入select出来的记录组。请问各位大侠,能实现吗?

解决方案 »

  1.   

    麻烦看一下程序。
    第一种的给这个table变量赋值的方法太麻烦。
    第二种的方法我试了下。系统不认这个虚拟表名。
    我想问的就是,第二种方法能不能实现。是不是我写的有什么问题。CREATE OR REPLACE PROCEDURE TEMP
    IS
        TYPE W_ROW_TYPE IS RECORD
        ( OCRコード  CHAR(4),
    OCRコード2 CHAR(4)
    );    TYPE W_TABLE_TYPE IS TABLE OF W_ROW_TYPE INDEX BY BINARY_INTEGER;
    w_row W_ROW_TYPE ;
        W_TABLE1 W_TABLE_TYPE ;
    BEGIN
      for i in 0..2 loop
            w_row.OCRコード  := '123' || i;
           w_row.OCRコード2 := '567' || i;
           W_T乗務員勤番テーブル(i) := w_row;
      end loop;  for i in 0..2 loop
           DBMS_OUTPUT.PUT_LINE(W_T乗務員勤番テーブル(I).OCRコード );
    DBMS_OUTPUT.PUT_LINE(W_T乗務員勤番テーブル(I).OCRコード2);
           w_row.OCRコード2 := '567' || i;       W_T乗務員勤番テーブル(i) := w_row;
      end loop;
      INSERT INTO W_TABLE1
      (
      SELECT OCRコード , OCRコード2 FROM (与上面记录变量同结构的表)
      );
    END ;
      

  2.   

    还是要正常的insert  没有简单办法,
    insert into table(
    col1,
    col2
    )values
    (
    rec_table.col1,
    rec_table.col2
    );
    负值也一样
      

  3.   

    TYPE W_TABLE_TYPE IS TABLE OF W_ROW_TYPE INDEX BY BINARY_INTEGER; 这样声明的是一个表变量,是有生存范围的
    你在这个存储过程的外部直接插入 肯定会找不到这个表的存在直接在包里面执行插入就可以了或者直接声明一个temporary table on session 也可以