Что такое записи в PL/SQL Oracle?
Запись (record) представляет собой составную структуру данных. Другими словами, запись состоит из нескольких полей, каждое из которых обладает собственным значением. Записи в программах PL/SQL очень похожи на строки в таблицах баз данных. Запись как целое не имеет собственного значения. Однако значение имеет каждый ее компонент, или поле, а объединение их в единую запись позволяет хранить и обрабатывать все значения как одно целое.
Каждая строка таблицы состоит из одного или нескольких столбцов, которые могут содержать данные разных типов. Аналогичным образом запись состоит из одного или нескольких полей. Существует три способа определения записи, но после ее определения доступ к полям и их изменение всегда выполняются по одним и тем же правилам.
Следующий блок демонстрирует объявление записи на базе таблицы базы данных. Допустим, имеется таблица для хранения информации о любимых книгах:
CREATE TABLE books ( book_id INTEGER, isbn VARCHAR2(13), title VARCHAR2(200), summary VARCHAR2(2000), author VARCHAR2(200), date_published DATE, page_count NUMBER );
Далее мы можем легко создать запись на основании объявления этой таблицы, заполнить ее результатами запроса к базе данных, а затем работать со значениями отдельных столбцов через поля записи:
DECLARE my_book books%ROWTYPE; BEGIN SELECT * INTO my_book FROM books WHERE title = 'Oracle PL/SQL Programming, 6th Edition'; IF my_book.author LIKE '%Feuerstein%' THEN DBMS_OUTPUT.put_line ('Код ISBN: ' || my_book.isbn); END IF; END;
Записи также могут определяться на базе ранее определенного типа. Допустим, в базе данных нас интересует только имя автора и название книги. Вместо того чтобы использовать %ROWTYPE для объявления записи, мы создаем тип записи:
DECLARE TYPE author_title_rt IS RECORD ( author books.author%TYPE ,title books.title%TYPE ); l_book_info author_title_rt; BEGIN SELECT author, title INTO l_book_info FROM books WHERE isbn = '978-1-449-32445-2';