Oracle SQL

Фильтр по тегу: pl sql


Использование GUID в ORACLE

Чалышев М.М www.orasource.ru ; резюме

GUID некоторая уникальная последовательность символов, в некоторых случаях, может использоваться в качестве первичного ключа.
Рассмотрим основные работы с GUID в ORACLE.

Получить GUID в ORACLE можно, воспользовавшись функцией
sys_guid()
запрос в этом случае будет выглядеть следующим образом
select sys_guid() from dual

результат
4A9B3CF364FB92CAE050A8C0670A0D3A
Для получения GUID в PL SQL используются несколько аналогичная команда
Следует так же отметить, что для ранения GUID в ORACLE используются следующие типы данных
raw(16) и varchar2(32);

следующие примеры демонстрируют работу c GUID в PL/SQL ORACLE
declare
  p_raw raw(16); 
begin
  p_raw := sys_guid;
  dbms_output.put_line(p_raw);
end;

результат 4A9B3CF3650092CAE050A8C0670A0D3A

declare
  p_vc2 varchar2(32);
begin
  p_vc2 := sys_guid;
  dbms_output.put_line(p_vc2);
end;

результат 4A9B3CF3652292CAE050A8C0670A0D3A
читать дальше...
добавлено: 13 мар 17 просмотры: 724, комментарии: 1



Динамический SQL в Oracle - легко и понятно (часть вторая - курсоры FETCH , Close , Open FOR )

Чалышев М.М www.orasource.ru
Подари, продай, обменяй - множество недорогих и отличных вещей: объявления вместо AVITO - ВКонтакте

Использование курсоров в динамическом SQL, команды FETCH и CLOSE
Для работы с динамическим запросом который возвращает несколько строк используются курсоры . Работа с курсорами - это всего три команды: OPEN-FOR , FETCH и CLOSE .

Сначала , вы с помощью команды OPEN, открываете переменную курсора, далее в цикле FOR последовательно считываете результат запроса из нескольких строк запроса. В каждой итерации цикла FOR, вызывается команда FETCH которая считывает из результирующего набора по одной записи. Когда все строки обрабатываются, вы закрываете курсор вызывая метод CLOSE для переменной курсора.
читать дальше...
добавлено: 07 сен 13 просмотры: 27149, комментарии: 2



Hесложный способ перевернуть запрос с группировкой

Чалышев М.М www.orasource.ru ; резюме автора
изучаем SQL группа в контакте - присоединяйтесь

Hесложный способ перевернуть запрос с группировкой
-- условимся, что перечень значений свойств был ограничен
-- для примера создадим таблицу со следующими полями
-- 1) Название
-- 2) Цвет
-- по условиям задачи у нас сеть конечное количество цветов красный , зеленый , синий
create table t1(tid number,tname varchar2(20),tprop varchar2(20));

-- заполним таблицу данными
insert into t1 values(1,'круг','красный');
insert into t1 values(2,'круг','зеленый');
insert into t1 values(3,'круг','зеленый');
insert into t1 values(4,'круг','синий');
insert into t1 values(5,'квадрат','красный');
insert into t1 values(6,'квадрат','синий');
insert into t1 values(7,'квадрат','красный');
insert into t1 values(8,'треугольник','красный');
insert into t1 values(9,'треугольник','синий');


-- выполним свой
select tname, tprop, count(tprop) count from t1 group by tname, tprop



TNAME TPROP COUNT
круг синий 1
круг зеленый 2
круг красный 1
квадрат синий 1
квадрат красный 2
треугольник синий 1
треугольник красный 1


-- таким образом получим количество фигур определенного цвета
-- преобразуем запрос к более интересному виду
select tname, sum(decode(tprop,'синий',1,0)) "синий", sum(decode(tprop,'красный',1,0)) "красный" , sum(decode(tprop,'зеленый',1,0)) "зеленый"  from t1 
group by tname

TNAME синий красный зеленый
квадрат 1 2 0
круг 1 1 2
треугольник 1 1 0


в oracle 11 g появилась конструкция pivot
которая позволяет переворачивать группировки с ограниченным количеством перечислений
приведу пример использования инструкции pivot в рамках решения заданной задачи

SELECT * FROM (select tname, tprop from t1)
  PIVOT ( count(tprop) FOR tprop IN  ('красный','синий','зеленый'));


TNAME 'красный' 'синий' 'зеленый'
квадрат 2 1 0
круг 1 1 2
треугольник 1 1 0



Чалышев М.М www.orasource.ru
добавлено: 24 янв 13 просмотры: 2629, комментарии: 2



О блоге

Чалышев М.М www.orasource.ru ; резюме автора

я работаю с ORACLE около 8 лет, использовал в работе FORMS, REPORT
системы отчетности BI, работал с XML, партицирумыми многомиллионными таблицами
использовал ORACLE Migration tools и JAVA.
В своем блоке я хотел пролить свет на интересные и мало используемые возможности
диалекта SQL ORACLE.
Некоторые записи блога так же коснуться и pl sql , подробностей работы со специальными пакетами ORACLE...
надеюсь это будет интересно и полезно многим...
добавлено: 14 окт 12 просмотры: 811, комментарии: 0