Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DECLARE
- -- объявляем коллекцию рекордов (G_DATA_TABLE - глобальный тип)
- dds G_DATA_TABLE;
- C_TMPL clob :=
- 'declare
- -- объявляем коллекцию рекордов (G_DATA_TABLE - глобальный тип)
- dds_table G_DATA_TABLE;
- begin
- -- инициализируем коллекцию
- dds_table := G_DATA_TABLE();
- -- расширяем
- dds_table.extend();
- -- инициализируем элемент коллекции конструктором по умолчанию (все элементы := null)
- -- ( G_DATA_RECORD - глобальный объектный тип )
- dds_table(1) := G_DATA_RECORD();
- -- здесь меняются подстановки на необходимые из внешнего блока
- -- и присваиваются нужные поля
- dds_table(1).#VIEW_COL# := #VAL#;
- -- привоение коллекции, првязанной в execute immediate во внешнем блоке
- :DDS := dds_table;
- end;';
- l_cmd clob;
- BEGIN
- -- инициализируем коллекцию
- dds := G_DATA_TABLE();
- -- расширяем
- dds.extend();
- -- инициализируем элемент коллекции конструктором по умолчанию (все элементы := null)
- -- ( G_DATA_RECORD - глобальный объектный тип )
- dds(1) := G_DATA_RECORD();
- -- реплейсим в анонимном блоке нужное поле и соответствующее для него значение
- l_cmd := REPLACE(C_TMPL, '#VIEW_COL#', 'N01');
- l_cmd := REPLACE(l_cmd, '#VAL#', 111);
- -- выполняем анонимный блок, привязывая созданную коллекцию
- EXECUTE IMMEDIATE l_cmd using OUT dds;
- DBMS_OUTPUT.put_line(dds(1).N01);
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement