PL SQL记录操作

时间:2018-12-10 01:34:56

标签: oracle plsql record

您好,我正在做学术作业,需要一些帮助来建立记录:

  

写一个PL / SQL块以打印有关发布者的信息。

     
      
  • 根据bk_publishers表的结构声明一个PL / SQL记录。
  •   
  • 在声明性部分中,使用%ROWTYPE属性并声明类型为publisher_record的变量bk_publisher
  •   
  • 在可执行部分中,通过bk_publishersusing publ_id表中获取所有信息,并将其放入记录中。使用循环光标显示记录中的publ_idpubl_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 个答案:

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