首页 文章

PL SQL记录操作

提问于
浏览
0

嗨,我正在从事学术任务,需要一些帮助来设置记录:

编写PL / SQL块以打印有关发布者的信息 . 根据bk_publishers表的结构声明PL / SQL记录 . 在声明性部分中,使用%ROWTYPE属性并声明类型为bk_publisher的变量publisher_record . 在可执行部分中,使用publ_id从bk_publishers表中获取所有信息并将其放入记录中 . 使用游标for循环显示记录中的publ_id和publ_name .

Reference Database Chart

到目前为止,我已经能够编写一个输出内容的块,但我不知道如何获取要打印的记录的内容 .

任何见解都会非常有用!谢谢

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;
/

1 回答

  • 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;
    /
    

相关问题