Курсор в пл / квл - PullRequest
       8

Курсор в пл / квл

0 голосов
/ 02 ноября 2018

У меня есть ORACLE класс airport_t , который имеет поля данных для

Rank,
Airport,
Location,
Country,
Code_IATA,
Code_ICAO,
Total_passenger,
Rank_change,
Percent_Change

Я создал таблицу AIRPORTS2017OO с одним столбцом AIRPORT , в котором может храниться объект типа airport_t . У меня есть 50 строк данных в таблице Airport2017 , которую я могу вставить в airport столбец таблицы AIRPORTS2017OO с помощью курсора.

Я могу перебирать таблицу airport2017 с помощью курсора, указанного ниже, но я не знаю, как вставить данные в AIRPORTS2017OO таблицу.

Вот мое решение получить всю информацию из airport2017 table

DECLARE
   rank1        NUMBER;
   airports1    VARCHAR2 (80);
   location1    VARCHAR (40);
   country1     VARCHAR (30);
   iata1        VARCHAR (3);
   icao1        VARCHAR (4);
   total_pass   NUMBER;
   rank_c       NUMBER;
   p_change     NUMBER;

   CURSOR display
   IS
      SELECT * FROM airports2017;
BEGIN
   OPEN display;

   LOOP
      FETCH display
         INTO rank1,
              airports1,
              location1,
              country1,
              iata1,
              icao1,
              total_pass,
              rank_c,
              p_change;

      IF display%FOUND
      THEN
         DBMS_OUTPUT.put_line (airports1);
      ELSE
         EXIT;
      END IF;
   END LOOP;

   CLOSE display;
END;
/

1 Ответ

0 голосов
/ 02 ноября 2018

Вы знаете, что вы можете сделать:

INSERT INTO AIRPORTS2017OO select * from airports2017;

вместо всего этого кода курсора, верно?

В любом случае вот как это сделать:

DECLARE    
   a_data ARRAY;
   CURSOR display
   IS
      SELECT * FROM airports2017;
BEGIN
   OPEN display;

   LOOP
      FETCH display BULK COLLECT INTO a_data;

      FORALL i IN 1..a_data.COUNT
         INSERT INTO AIRPORTS2017OO VALUES a_data(i);

      IF display%FOUND
      THEN
         DBMS_OUTPUT.put_line (airports1);
      ELSE
         EXIT;
      END IF;
   END LOOP;

   CLOSE display;
END;
/
...