PL / SQL Ошибка: столбец ORA-00984 здесь не разрешен - PullRequest
0 голосов
/ 13 апреля 2020

Я пишу курсор для l oop, чтобы извлечь часть данных из таблицы A и вставить ее в таблицу B. Когда я запускаю свой код, я получаю эту ошибку:

enter image description here

Вот код, с которым я работаю:

CREATE TABLE New_Movie (
    ID INTEGER NOT NULL,
    title VARCHAR2(100),
    yr NUMBER(4,0),
    score NUMBER,
    votes INTEGER,
    director VARCHAR2(100),
CONSTRAINT New_Movie_PK PRIMARY KEY (id));

DECLARE
    counter INTEGER;
    CURSOR c_movie IS
        SELECT ID, title, yr, score, votes, director
        from movie
        where votes >= 50000;
BEGIN
    counter := 0;
    for n_movie IN c_movie
    LOOP
    counter := counter+1;
    dbms_output.put_line(counter|| 'rows have been inserted');
    INSERT INTO New_Movie VALUES(id, title, yr, score, votes, director);
    END LOOP;
    EXECUTE IMMEDIATE 'COMMIT';
END;

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Вы можете попробовать это

INSERT INTO New_Movie 
VALUES(n_movie .id, 
  n_movie.title, 
  n_movie.yr, 
  n_movie.score, 
  n_movie.votes, 
  n_movie.director);
0 голосов
/ 13 апреля 2020

В операторе вставки вы должны написать n_mov ie в начале каждого столбца.

CREATE TABLE New_Movie (
    ID INTEGER NOT NULL,
    title VARCHAR2(100),
    yr NUMBER(4,0),
    score NUMBER,
    votes INTEGER,
    director VARCHAR2(100),
CONSTRAINT New_Movie_PK PRIMARY KEY (id));

DECLARE
    counter INTEGER;
    CURSOR c_movie IS
        SELECT ID, title, yr, score, votes, director
        from movie
        where votes >= 50000;
BEGIN
    counter := 0;
    for n_movie IN c_movie
    LOOP
    counter := counter+1;
    dbms_output.put_line(counter|| 'rows have been inserted');
    INSERT INTO New_Movie VALUES(n_movie.id, n_movie.title, n_movie.yr, n_movie.score, n_movie.votes, n_movie.director);
    END LOOP;
    EXECUTE IMMEDIATE 'COMMIT';
END;
...