具有用户提示的PL SQL记录填充

时间:2018-12-12 06:18:49

标签: sql oracle plsql

您好,我正在做学术作业,我的程序块执行部分需要帮助。我正在尝试使用用户输入内容插入表格(畅销书)。任何帮助将不胜感激。

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;

/

relational diagram

**创建一个PL / SQL块,该块确定n个最畅销商品,其中n是用户提供的值。最畅销的书是销量最高的书。因此,如果用户输入数字5,则将检索前5名最畅销的图书。

  • 在说明性部分中,声明一条记录,以保存所有书籍的book_id,数量,书名,出版年份,isbn和定价。

  • 在可执行部分中,用AcmeBooks数据库的前n个畅销书填充记录,然后将记录插入best_sellers表中。请注意,这应在每本书的每一行中填充每本书订购的总数量。

  • 插入best_sellers表后,显示行。

  • 测试各种特殊情况,并确保该块能够正确处理它,例如n = 0或其中n大于bk_books表中的书数。每次测试后清空top_salaries表。**

我收到错误:

  

DECLARE *在第1行出现错误:ORA-01722:无效编号ORA-06512:在第27行

我在做什么错了?

0 个答案:

没有答案