PL SQL Record Population с приглашением пользователя - PullRequest
0 голосов
/ 12 декабря 2018

Привет, я работаю над академическим заданием, и мне нужна помощь с секцией исполнения моего блока.Я пытаюсь использовать пользовательский ввод для вставки в таблицу (бестселлеры).Любая помощь будет принята с благодарностью.

DROP TABLE best_sellers;
CREATE TABLE best_sellers (book_id integer(11) NOT NULL,
            quantity integer(11) NOT NULL,
            title varchar(75) NOT NULL
        year_publd integer(11) NOT NULL,
        isbn varchar(17) DEFAULT NULL,
        list_price decimal(6,2) DEFAULT NULL,
        PRIMARY KEY (book_id)
);



SET SERVEROUTPUT ON
SET VERIFY OFF


accept selection prompt "Please provide a number of best sellers "

DECLARE

amt NUMBER(5) := ('&selection.');

TYPE bk_record IS RECORD
(book_id bk_books.book_id%TYPE, 
quantity bk_order_details.quantity%TYPE,
title bk_books.title%TYPE, 
year_publd bk_books.year_publd%TYPE, 
isbn bk_books.isbn%TYPE,
page_count bk_books.page_count%TYPE,
list_price bk_books.list_price%TYPE);
bk_record0 bk_record;

CURSOR bst_cur IS
   SELECT bk_books.book_id, bk_order_details.quantity, bk_books.title, bk_books.year_publd, bk_books.isbn, bk_books.page_count, bk_books.list_price
   FROM bk_books
      JOIN bk_order_details
           ON bk_books.book_id = bk_order_details.book_id;


BEGIN

OPEN bst_cur;
FETCH bst_cur into bk_record0;
CLOSE bst_cur; 
INSERT INTO best_sellers
    VALUES bk_record0;
END;

/

реляционная диаграмма

** Создайте блок PL / SQL, который определяет число n бестселлеров, где n равнозначение, предоставленное пользователем.Самые продаваемые книги - это книги с наибольшим количеством проданных книг.Таким образом, если пользователь введет число 5, будут найдены 5 самых продаваемых книг.

  • В декларативном разделе объявите запись для хранения book_id, количество, название, годопубликовано, isbn и цена по прайс-листу для всех книг.

  • В разделе исполняемых файлов заполните запись топ-n самых продаваемых из базы данных AcmeBooks, а затем вставьте запись в таблицу best_sellers.Обратите внимание, что это должно заполнить одну строку на книгу общим количеством, заказанным для каждой книги.

  • После вставки в таблицу best_sellers отобразите строки.

  • Протестируйте множество особых случаев и убедитесь, что блок обрабатывает его соответствующим образом, например, n = 0 или где n больше, чем количество книг в таблице bk_books.После каждого теста очищайте таблицу top_salaries. **

Я получаю сообщение об ошибке:

DECLARE * ERROR в строке 1: ORA-01722: неверный номерORA-06512: в строке 27

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...