Ранее мы рассматривали создание блоков на основе таблиц, представлений, синонимов. В принципе это достаточный набор объектов, так как для реализации иерархических запросов JOIN (
Для начала определимся, что такое
SELECT в конструкции FROM. Значение, возвращаемое
Перейдем к практической части, в которой мы выполним два несложных упражнения:
Для начала рассмотрим пример с созданием блока на основе запроса с группировкой.
NUMB:create table numb(A number);
begin for i in 1..10 loop insert into NUMB values(i); end loop; end;
update NUMB set A=4 where A=7; update NUMB set A=5 where A=6;
select * from NUMB; A -------- 1 2 3 4 5 5 4 8 9 10 10 rows selected.
select A from numb group by a; A -------- 1 2 3 4 5 8 9 10 8 rows selected.
Теперь, когда все готово для выполнения примера, создадим новую форму FORM_1. Создайте блок данных вручную. Выберите блок в
Query Data Source Type – определяет тип источника данных для блока. Установите этот параметр на Query Data Source Name – текст вложенного запроса (select A from numb group by a
Database item установите равным " Yes ".Name – значение этого свойства установите равным " Num ".Создайте одну кнопку и один текстовый элемент с параметрами:
Database item установите равным " Yes " (иначе получите ошибку unable to perform query).Column name – это свойство установите равным A (имя должно совпадать с именем столбца в запросе, иначе также получите ошибку unable to perform query).Создайте триггер WHEN-BUTTON-PRESSED:
go_block ('NUMB');
execute_query;
Мы рассмотрели очень простой, но показательный пример, который поможет вам понять назначение
Данный пример практически ничем не будет отличаться от предыдущего, за тем исключением, что в качестве источника данных мы возьмем функцию, возвращающую массив данных. В примере мы рассмотрим функцию с параметрами, чтобы вы могли ясно представить, какие возможности может вам дать использование данного типа источника. Выполнение примера можно разбить на две части:
Приступим к первой части.
Создадим простую -функцию, возвращающую набор данных в виде последовательности чисел:
create type "virtual_table_type" as table of number;
create or replace function "pipe_table" (p_num_rows in number, l_order varchar2)
return "virtual_table_type" pipelined
is type t_data is ref cursor;
c_data t_data;
cursor c1 is select * from numb;
c2 c1%rowtype;
begin
open c_data for 'select * from numb
order by'||l_order;
for i in 1 .. p_num_rows loop
fetch c_data into c2; pipe row(c2.a);
end loop;
return;
end "pipe_table";
select * from table("pipe_table"(5,' a desc'));
COLUMN_VALUE
---------
10
9
8
5
5
Функция готова, теперь можно перейти к следующему шагу. Но прежде чем начать, давайте рассмотрим еще один небольшой пример, чтобы не ограничиваться отображением данных из -функции и показать, как можно другому блоку назначить новый источник данных.
Numb с одним текстовым полем А. В блоке NUM измените свойство Query Data Source Name на select * from table(vt(5,' a desc')).WHEN-BUTTON-PRESSED следующие строки:go_block('NUM');
execute_query;
go_block('NUMB');
set_block_property('NUMB', query_data_source_type,
get_block_property( 'NUM', query_data_source_type));
set_block_property('NUMB', query_data_source_name,
get_block_property( 'NUM', query_data_source_name));
execute_query;
Запустите форму на выполнение. В результате у вас в обоих элементах должны отобразиться одинаковые данные. Этот простой пример должен помочь вам закрепить ранее выполненное упражнение, и вы сможете применить данную функциональность в своих приложениях. Приведем простой пример, когда, имея форму с одним блоком данных, вы хотите просматривать набор не только отсортированных данных или ограниченных условием WHERE Clause, но и сгруппированных. Вам не придется создавать много представлений на сервере – достаточно создать несколько блоков с различными источниками данных и назначать их основному при нажатии кнопки.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.