我有 ORACLE 类 airport_t ,其中的数据字段为
Rank,
Airport,
Location,
Country,
Code_IATA,
Code_ICAO,
Total_passenger,
Rank_change,
Percent_Change
我创建了具有单个列 AIRPORT 的表 AIRPORTS2017OO ,该表可以存储 airport_t 类型的对象。我在 Airport2017 表中有50行数据,可以使用光标将其插入表 AIRPORTS2017OO 的 airport 列中。
我能够通过下面给出的光标在 airports2017 表中进行迭代,但是我不知道如何将数据插入 AIRPORTS2017OO 表中。
这是我从 airports2017 表中获取所有信息的解决方案
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;
/
答案 0 :(得分:1)
您知道自己可以做到:
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;
/