Архив за месяц: Июль 2015

Полезные запросы PLSQL в oracle

Как выбрать объект в pl sql и проверить валиден или нет. Под объектом может быть например функция или процедура.

SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME LIKE '%SOMENAME%'

Общую информации о функции узнали, а вот как посмотреть код функции в ORACLE? Наиболее распространены два способа. Либо получить по строкам кода, либо сразу весь текст в тип данных (CLOB).
Способ 1

SELECT text FROM ALL_SOURCE WHERE NAME='SS' ORDER BY line;

Способ 2

select dbms_metadata.get_ddl('FUNCTION', 'F_NAME') from dual;

А как удалить функцию в PL SQL? Пример кода ниже

DROP FUNCTION function_name;

Как узнать какие таблицы есть в базе данных oracle? Для этого воспользуемся запросом, выводящий информацию по всем таблицам:

SELECT * FROM ALL_TABLES;

Использование псевдоколонки ROWNUM . Rownum показывает номер выбранной записи, таким образом чтобы выбрать 5 записей, применяем запрос к oracle:

SELECT * FROM some_table WHERE rownum <= 5

Выбрать системное время и перевести его в другой формат

SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYY') FROM DUAL

Посмотреть структуру таблицы в PLSQL

SELECT column_name FROM user_tab_cols WHERE table_name = 'TABLE_NAME'

Узнать версию оракла можно так. Полезно когда хотите применить какую-нибудь фишку из новой версии.

SELECT * FROM v$version;

Узнать размер базы данных в гигабайтах

SELECT SUM (bytes) / 1024 / 1024 / 1024 AS GB FROM dba_data_files;

Сгенерировать случайное число между 1 и 100,

SELECT ROUND (DBMS_RANDOM.VALUE () * 100) + 1 AS random_num FROM DUAL;

Узнать много ли записей в таблице можно разными способами (например используя агрегатную функцию COUNT ), а вот если требуется узнать есть ли вообще записи, то наиболее эффективный запрос будет таким:

SELECT 1 FROM TABLE_NAME WHERE ROWNUM = 1;

Как проэкранировать кавычку в Oracle? Например использовать оператор q, пример:

dbms_output.put_line(q'[I'm О'Коннор]');

Узнать валиден ли тот или иной объект, например пакет

SELECT object_name, object_type, status FROM user_objects where obj_name = 'some_obj'