Работа со строками в Oracle (PL/SQL)

Осваиваем Oracle и PL/SQL

Основные способы обработки строковых значений в Oracle.
В этой публикации я приведу основные функции работы со строками которые встречались мне в работе, и будут полезны всем кто работает с Oracle.

CONCAT — Объединяет две строки

SQL> select concat('Пётр ','первый') from dual;
 
CONCAT('ПЁТР','ПЕРВЫЙ')
-----------------------
Пётр первый

Читаль далее...

Oracle PLSQL строки программирование SQL функции

Работа с XML в Oracle PL/SQL (Часть 1)

Осваиваем Oracle и PL/SQL

В этой публикации я приведу основные способы работы с XML в Oracle, которые сам использую.

Здесь будут рассмотрены на примерах такие операторы и функции как: XMLType, XMLElement, xmlattributes, XMLAGG, XMLSequence, insertchildxml, xmlconcat.

Итак начнем с объявления переменной в которой будем хранить текст XML.
Делается это так:

declare
  --Задаем переменную
  my_var XMLType;
begin
  --Присваиваем значение нашей переменной
  my_var:= XMLType('<root><item>Просто пробуем XML в Oracle</item></root>');
  --Выводим в вывод
  dbms_output.put_line(my_var.GetClobVal());
end;


Для начала рассмотрим некоторые приёмы работы с XML, чуть позже перейдем к генерации XML из данных при выборке.

Читаль далее...

Oracle PLSQL XMLType XMLElement xmlattributes XMLAGG XMLSequence insertchildxml xmlconcat

Как отлавливать ошибки в Oracle (PLSQL) EXCEPTION,SQLERRM,SQLCODE

Осваиваем Oracle и PL/SQL

Маленькое руководство по отлавливанию ошибок в Oracle PLSQL.
Описание как использовать в Oracle (PLSQL) функции SQLERRM и SQLCODE для отлова ошибок EXCEPTION, с описанием синтаксиса и примером.

Функция SQLERRM возвращает сообщение об ошибке связанное с последним возникшим исключением (ошибкой).
Функция SQLERRM — не имеет параметров.

Функция SQLCODE возвращает код ошибки связанный с последним возникшим исключением (ошибкой)
Функция SQLERRM — не имеет параметров.

Обычно обработка исключений EXCEPTION выглядит следующим образом:

EXCEPTION
   WHEN наименование_ошибки_1 THEN
      [statements]

   WHEN наименование_ошибки_2 THEN
      [statements]

   WHEN наименование_ошибки_N THEN
      [statements]

   WHEN OTHERS THEN
      [statements]

END [наименование_процедуры];


Вы можете использовать функции SQLERRM и SQLCODE для вызова сообщения об ошибке например таким образом:
EXCEPTION
   WHEN OTHERS THEN
      raise_application_error(-20001,'Произошла ошибка - '||SQLCODE||' -ERROR- '||SQLERRM);
END;
-- В данном случае появится всплывающее сообщение.

Читаль далее...

Oracle PLSQL SQL EXCEPTION SQLERRM SQLCODE ошибки программирование

Создание пользователя (схемы) в Oracle

Осваиваем Oracle и PL/SQL

Пример простого создания пользователя (схемы) в БД Oracle:

--Создаем нового пользователя test с паролем 240580

create user test IDENTIFIED BY 240580
default tablespace users
temporary tablespace temp

--Добавляем квоту на дисковое пространство.
alter user test quota 100M on users;


--Разрещаем создавать сессии пользователю (подключаться)
grant create session to test


--Разрешаем создавать таблицы пользователю
grant create table to test

Читаль далее...

Oracle user create создать пользователь схема

Функция Oracle TO_CHAR (PL/SQL)

Осваиваем Oracle и PL/SQL

Функция TO_CHAR — преобразует дату или число в строку.

Синтаксис:

TO_CHAR(исходное_значение, Формат, NLS_LANGUAGE);
--В качестве исходного значения может быть передана как дата <strong>DATE</strong> так и число <strong>NUMBER</strong>.
--Последний параметр NLS_LANGUAGE (как я понимаю для задания кодировки) мне не разу не пригодился.

Читаль далее...

PLSQL Oracle функции function to_char

Функция Oracle TO_DATE (PL/SQL)

Осваиваем Oracle и PL/SQL

Функция TO_DATE — преобразует строку в переменную времени DATE.

Синтаксис:

TO_DATE(исходная_строка, Формат, NLS_LANGUAGE);
--Последний параметр NLS_LANGUAGE (как я понимаю для задания кодировки) мне не разу не пригодился.

Читаль далее...

PLSQL Oracle function функции to_date

Исправляем ошибку ORA-00604: error occured at recursive SQL level 1ORA-12705 в Oracle SQL Developer

Осваиваем Oracle и PL/SQL

Ошибка при установке соединения с сервером из Oracle SQL Developer:

ORA-00604: error occured at recursive SQL level 1ORA-12705: Cannot access NLS data files or invalid enviroment specified

Для исправления делаем следующие действия:

Открываем <папку_со_средой>\ide\bin\ide.conf
Дописываем туда две строчки:

AddVMOption -Duser.language=en
AddVMOption -Duser.region=us

И всё!

Комментировать...

Oracle ошибка подключения

Объединение выборок UNION, INTERSECT, MINUS в Oracle (PL/SQL)

Осваиваем Oracle и PL/SQL

В Oracle присутствует возможность объединять выборки. Для объединения используются операторы: UNION (с вариацией UNION ALL), INTERSECT и MINUS. Рассмотрим работу всех этих операторов.

1. UNION и UNION ALL

UNION — объединяет наборы данных, но при этом исключает дублирующие записи, тоесть если у вас в первом и во втором наборе есть одинаковая запись то в результирующем наборе будет только одна такая запись.
UNION ALL — объединяет наборы данных и оставляет дублирующие записи, тоесть если в первом и во втором наборе есть одинаковые записи то в результирующем наборе будут все эти записи.

Для экспериментов, создадим две таблицы и заполним их тестовыми данными.

Читаль далее...

Oracle PLSQL UNION MINUS INTERSECT объединение SQL

XML в Oracle PL/SQL (Часть 2 - Выборки в виде XML)

Осваиваем Oracle и PL/SQL

В предыдущей публикации были рассмотрены некоторые приёмы манипуляции с XML в Oracle, теперь рассмотрим как делать выборку данных напрямую в XML. Это на мой взгляд самая интересная часть.

На практике выяснилось, что для Oracle в большинстве случаев не существенно, вернуть ли набор записей или сформированную готовую XML этого набора записей — по времени выполнения эти действия субъективно практически равноценны. Но вот если у вас есть потребность в формировании некоторой XML структуры в приложении на основе данных полученных из БД Oracle, практически наверняка это будет довольно ресурсоемкое мероприятие, гораздо легче переложить этот функционал на базу данных, хотя на первый взгляд и кажется что это не то, чем должен заниматься движок базы данных.

Читаль далее...

Oracle PLSQL XMLType XMLElement xmlattributes XMLAGG XMLSequence insertchildxml xmlconcat

Размер Таблиц и Tablespace в Oracle

Осваиваем Oracle и PL/SQL

Узнаем сколько занимает каждый TableSpace:
(Размер указан в мегабайтах)

select a.tablespace_name, totalspace, nvl(freespace,0) freespace,
   (totalspace-nvl(freespace,0)) used,
  ((totalspace-nvl(freespace,0))/totalspace)*100 "%USED"
from
  (select tablespace_name, sum(bytes)/1048576 totalspace
   from dba_data_files
   group by tablespace_name) a,
  (select tablespace_name, sum(Bytes)/1048576 freespace
   from dba_free_space
   group by tablespace_name) b
where a.tablespace_name = b.tablespace_name (+)
  and ((totalspace-nvl(freespace,0))/totalspace)*100 > 90
 order by 5 desc
 


Теперь узнаем сколько занимают таблицы в указанном TableSpace:
(Размер в мегабайтах, имя нужного TableSpace — берем из результатов предыдущего запроса, для всех при больших базах может выполняться долго)

select de.owner, de.segment_name, sum(de.bytes)/1048576, de.segment_type from dba_extents de
 where de.owner in ('нужный tablespace')
group by de.owner, de.segment_name, de.segment_type


Вот и всё.

Комментировать...

tablespace oracle pl/sql table size