Операции записи PL SQL - PullRequest
       21

Операции записи PL SQL

0 голосов
/ 10 декабря 2018

Привет, я работаю над академическим заданием и мне нужна помощь в настройке записей:

Напишите блок PL / SQL для печати информации об издателе.

  • Объявите запись PL / SQL на основе структуры таблицы bk_publishers.
  • В декларативном разделе используйте атрибут %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;
/

1 Ответ

0 голосов
/ 10 декабря 2018

Простая переменная 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;
/
...