您好,我正在做学术作业,需要一些帮助来建立记录:
写一个PL / SQL块以打印有关发布者的信息。
- 根据
bk_publishers
表的结构声明一个PL / SQL记录。- 在声明性部分中,使用
%ROWTYPE
属性并声明类型为publisher_record
的变量bk_publisher
。- 在可执行部分中,通过
bk_publishers
从using publ_id
表中获取所有信息,并将其放入记录中。使用循环光标显示记录中的publ_id
和publ_name
。
到目前为止,我已经能够编写一个输出内容的块,但是我不知道如何获取记录的内容以进行打印。
任何见解都将非常有帮助! 谢谢
SET SERVEROUTPUT ON
SET VERIFY OFF
DECLARE
TYPE bk_record IS RECORD
(publ_id bk_publishers.publ_id%TYPE,
publ_name bk_publishers.publ_name%TYPE);
publisher_record bk_publishers%ROWTYPE;
CURSOR bk_cur IS
SELECT * FROM bk_publishers;
BEGIN
OPEN bk_cur;
FETCH bk_cur INTO publisher_record;
CLOSE bk_cur;
FOR publ_no in bk_cur
LOOP
DBMS_OUTPUT.PUT_LINE(publ_no.publ_id || ' ' || publ_no.publ_name);
END LOOP;
END;
/
答案 0 :(得分:1)
一个简单的RECORD
变量可以容纳一行的内容,因此您必须在循环中显示各个行的列值。
DECLARE
TYPE bk_record IS RECORD ( publ_id bk_publishers.publ_id%TYPE,
publ_name bk_publishers.publ_name%TYPE );
publisher_record bk_publishers%rowtype;
CURSOR bk_cur IS SELECT *
FROM bk_publishers;
BEGIN
OPEN bk_cur;
LOOP
FETCH bk_cur INTO publisher_record;
EXIT WHEN bk_cur%notfound; --Condition to exit the loop.
dbms_output.put_line(publisher_record.publ_id
|| ' ' || publisher_record.publ_name);
END LOOP;
CLOSE bk_cur;
END;
/