DECLARE TYPE TYP_REC IS RECORD ( num number ,vname varchar2(30) ); TYPE rec_table_type IS TABLE OF TYP_REC ; my_tab rec_table_type; BEGIN my_tab := rec_table_type(); my_tab.EXTEND; my_tab(1).num := 21; my_tab(1).vname := 'норма'; my_tab.EXTEND; my_tab(2).num := 21; my_tab(2).vname := 'норма1'; my_tab.EXTEND; my_tab(3).num := 21; my_tab(3).vname := 'норма1'; DBMS_OUTPUT.PUT_LINE('my_tab(1) is '||my_tab(1).num||' - '||my_tab(1).vname); For i IN my_tab.FIRST .. my_tab.LAST Loop dbms_output.put_line( 'Line = ' || my_tab(i).num ) ; dbms_output.put_line( 'Code = ' || my_tab(i).vname ) ; End loop; END;
DB LINK работа с LOB полями и ORA-22992
DB LINK - специальный механизм СУБД ORACLE который позволяет взаимодействовать с другими базами данных
примечательно что DB LINK могут использоваться не только для взаимодействия с базами данных ORACLE
но и с другими СУБД , такими как MS SQL или MY SQL
для создания DB link пользователь должен иметь соответсвующую системную привилегию
create database link
рассмотрим несколько примеров создания db_link
Создание таблиц - краткий обзор
Нашел вот такую статью, показалась интересной - перевел, и внес некоторые корректировки
Это некий краткий - на одну страницу, обзор с примерами на тему - создание таблиц в oracle
Чтобы пользователь мог создать таблицу он должен обладать соответствующей системной привилегией create table.
Кроме того в дисковом пространстве должно быть достаточно места для создания таблиц.
Небольшой пример работы с вложенными таблицами nested table
Превращаем столбцы в строчки LISTAGG
-- Превращаем столбцы в строчки
-- функция LISTAGG
-
Описание функции listagg
согласно переводу Oracle Reference Database listagg может использоваться
1) Как одиночная агрегатная функция, LISTAGG обрабатывает все строки и возвращает одно значение.
2) Как групповая агрегатная функция, LISTAGG обрабатывает и возвращает данные для каждой группы определенной в GROUP BY.
3) Как аналитическая функция, LISTAGG обрабатывает данные разбитые на блоки, задаваемые одним или несколькими выражениями query_partition_clause.
давайте рассмотрим самый интересный пример:
Предикаты any , all в SQL запросах
-- Использование any , all в запросах , очень похоже на использования предиката exists , но есть некоторые отличия
-- рассмотрим работу данных предикатов на примерах
-- для примера создадим таблицу со следующими полями
-- 1) Название
-- 2) Цвет
-- 3) вес
drop table t1; create table t1(tid number,tname varchar2(20),tprop varchar2(20), tvalue number); -- заполним таблицу данными insert into t1 values(1,'круг','красный', 10); insert into t1 values(2,'круг','зеленый', 30); insert into t1 values(3,'круг','зеленый', 30); insert into t1 values(4,'круг','синий', 20); insert into t1 values(5,'квадрат','красный', 10); insert into t1 values(6,'квадрат','синий', 20); insert into t1 values(7,'квадрат','красный', 20); insert into t1 values(8,'треугольник','красный', 30); insert into t1 values(9,'треугольник','синий', 10);