Для выдачи нескольких столбцов данных функция PL/SQL должна воз-U вращать либо REF CURSOR, либо сборную конструкцию данных. REF CURSOR работает с данными, которые могут быть выбраны в запросе.
Сборная конструкция должна быть материализована, прежде чем ее можно будет вернуть. Огас1е9г предоставляет канализированные табличные функции. Табличная функция возвращает весь набор строк (обычно как сборную конструкцию) и может запрашиваться непосредственно в операторе SQL, как если бы она была настоящей таблицей базы данных. Канализированная табличная функция действует аналогично, но возвращает данные по мере их создания, а не все сразу. Канализированные табличные функции являются более эффективными, поскольку данные возвращаются сразу же, как только это становится возможным. Например, следующая функция возвращает сборную конструкцию из 20 записей:
Канализированная табличная функция должна возвращать сборную конструкцию. Внутри функции используется оператор PIPE ROW для возврата отдельных элементов сборной конструкции. Функция должна завершаться пустым оператором RETURN. После создания функции ее можно вызвать в запросе SQL с помощью оператора TABLE:
Этот простой пример показывает, как могут использоваться канализированные табличные функции. Они часто применяются для преобразования данных из одного типа в другой.
Дополнительные модули
PL/SQL имеет целый ряд встроенных модулей, обеспечивающих дополнительные возможности, такие как коммуникационные протоколы и доступ к файловой системе. В приложении А перечисляются модули, поставляемые с базой данных. Кратко рассмотрим некоторые из основных модулей.
< Предыдущая | Следующая > |
---|