Лабораторные работы по курсу «Базы данных»



Pdf көрінісі
бет44/46
Дата12.05.2023
өлшемі0,79 Mb.
#92097
түріПрактикум
1   ...   38   39   40   41   42   43   44   45   46
Прием работы 
Прием происходит при наличии оформленного отчета и работающей БД. 
Вопросы 
1. Чем отличается использование атрибута %ROWTYPE от типа RECORD? 
2. Что такое PL/pgSQL и из каких блоков состоит процедура на этом языке? 
3. Что такое триггеры и триггерные функции? 
4. Как можно вставить данные в переменную типа RECORD? 
5. Какие циклы существуют в языке PL/pgSQL. 


Л
абораторная работа №8 
Тема: Объектно-ориентированный подход в создании БД с 
использованием объектно-реляционной СУБД PostgreSQL. 
Цель: моделирование объектного подхода на реляционной БД. 
Навыки и умения: написание хранимых процедур на языке PL/pgSQL, 
создание представлений, написание триггеров и триггерных функций, 
написание агрегатных функций. 
Теоретический базис 
Создание агрегатных функций 
СУБД PostgreSQL позволяет создавать собственные агрегатные 
функции для применения их в запросах группировки. Для определения новой 
агрегатной функции в базе данных служит конструкция CREATE 
AGGREGATE. Синтаксис конструкции следующий: 
CREATE AGGREGATE имя ( BASETYPE = входной_тип
[ , SFUNC - функция. STYPE = переходный_тип ]
[ , FINALFUNC - завершающая_функция ]
[ , INITCOND - начальное_состояние ] ) 
Расшифровка параметров: 
• имя. Имя создаваемой агрегатной функции; 
• входной_тпип. Тип входных данных, с которыми работает 
создаваемая функция. Если агрегатная функция игнорирует 
входные данные (как, например, функция count()), вместо типа 
данных указывается строковая константа ANY;
• функция. Имя функции, вызываемой для обработки всех входных 
данных, отличных от NULL. Обычно такая функция получает два 
аргумента: первый аргумент относится к типу данных 
переходный_тип, а второй — к типу данных входной_тип. Если 
агрегатная функция не анализирует входные данные, она 
получает только один аргумент типа переходный_тип. Так или 
иначе, 
функция 
должна 
возвращать 
значение 
типа 
переходный_тип; 
• переходный_тип. Промежуточный тип данных агрегатной 
функции;
• заверштощая_функция. Имя итоговой функции, вызываемой для 
вычисления результата агрегатной функции после обработки всех 
входных данных. Функция должна получать один аргумент типа 
переходный_тип. Выходной тип данных агрегатной функции 
определяется типом возвращаемого значения этой функции. Если 
параметр FINALFUNC не указан, то последнее переходное 
значение передается в качестве результата агрегатной функции, а 
выходной тип данных определяется типом переходный_тип; 


• начальное_состояние. Начальное состояние промежуточного 
значения агрегатной функции. Задастся литералом типа 
переходный_тип. Если параметр начальное_состояние не задай, 
промежуточное значение инициализируется псевдозначением 
NULL. 
Агрегатные функции характеризуются в первую очередь типом 
входных данных. Допускается существование двух и более агрегатных 
функции с одинаковыми именами, вызываемых с разными тинами данных 
(это называется перегрузкой функций). 
Пример 8.1: 
В следующем примере определяется агрегатная функция sum(), 
работающая с текстовыми данными. Она вызывает встроенную функцию 
PostgreSQL – textcat(text, text) для конкатенации всего текста во входных 
данных: 


Достарыңызбен бөлісу:
1   ...   38   39   40   41   42   43   44   45   46




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет