Редактор запросов

  1. Окно редактора запросов

  2. Комбинации клавиш

  3. История выполненных запросов

  4. Диспетчер "Алиасов запросов"

  5. Хинты редактора

  6. Процедура OPENLIST

Требования к синтаксису!

Программа поддерживает 2 синтаксиса кода для всех СУБД. Допустимо одновременно использовать оба в одном скрипте!

1. Классический синтаксис Oracle

Операция create, declare, begin должна заканчиваться символом "/" располагающимся на отдельной строке в случаи выполнения скрипта

Для остальных команд разделителем выступает ";" в конце команды

2. Синтаксис MS SQL Server

Разделителем выступает ключевое слово "go" на отельной строке, команда не должна завершаться другим спецсимволом, если того не требует ее синтаксис

1. Окно редактора запросов

 

Состоит из панели кнопок управления и области "Страниц"

 

Кнопки управления

Создать новый лист для работы с СУБД "MySQL"

Создать новый лист для работы с СУБД "MS SQL Server"

Удалить текущий лист 

Показать "Монитор  программы"

Показать "Диспетчер ошибок"

 
  • Shift + F1  -  создать новый лист для работы с СУБД "Oracle"

  • Shift + F2  -  создать новый лист для работы с базами "SQLite"

  • Shift + F3  -  создать новый лист для работы с СУБД "PostgreSQL"

  • Shift + F4  -  создать новый лист для работы с СУБД "MySQL"

  • F3  -  удалить текущий активный лист

  • Alt + F1  -  показать главное окно программы

  • Alt + F4  -  закрыть окно редактора запросов (листы не уничтожаются)

  • F4  -  Показать план выполнения запроса на текущем листе/выделенного запроса

  • F5 или F8  -  выполнить выделенный запрос/все запросы на листе/выделенные запросы

  • F6  -  показать содержимое выделенной таблицы | показать содержимое таблицы в название которой установлен курсор (отображаются первые n строк, зависит от размера окна Data)

  • Ctrl + G  -  показать свойства выделенной таблицы (из текста редактора)

  • Ctrl + W  - создать алиас для выделенного запроса

  • Ctrl + F  -  поиск текста в редакторе

  • Ctrl + R  -  поиск и замена текста в редакторе

  • Ctrl + T  -  создать копию текущего листа (новый лист автоматически подключается к БД)

  • Ctrl + F10  -  показать детальную информацию о подключении листа

  • Ctrl + F12  -  остановить загрузку данных в дерево объектов

  • Alt + F1  -  показать главное окно программы

  • Alt + F2  -  показать панель настройки соединения

  • Alt + F3  -  сформировать и показать краткий отчет о состоянии БД

  • Alt + F4  -  показать код создания выделенного объекта в редакторе (DDL)

  • Alt + F6  -  показать список колонок и их тип в сетке редактора

3. История выполненных запросов

 

По умолчанию программа сохраняет в локальной базе все выполненные в редакторе запросы. 

 

При открытии окна в списке "Query list" отображается список все выполненных запросов с момента последнего старта программы.

Поиск запросов в хранилище (блок "Filter")

Поле "Date begin" - ограничивает поиск по дате (минимальное значение)

Поле "Date end" - ограничивает поиск по дате (максимальное значение)

Поле "Database name" - имя БД, ограничить поиск запросов выполненными в определенной базе

Поле "Search text" - строка поиска/часть строки. Для поиска по множеству условий используется разделитель |

Пример: select|dba|declare

будет разыскиваться запрос содержащий 3 указанных ключевых слова. 

Поиск регистронезависимый.

Двойной клик по строке в списке "Query list" добавляет запрос на активный лист редактора.

Блок "Details" - подробная информация о выполненном запросе, статус выполнения, длительность, ...

4. Диспетчер "Алиасов запросов"

 

Служит для присвоения алиаса (синонима) запросу для его последующего выполнения по данному имени.

Открыть диспетчер можно или нажатием соответствующей кнопки на панели управления или из текущего листа комбинацией клавиш Ctrl+W . Если при этом выделен запрос в редакторе, он автоматически копируется в поле "Text" диспетчера.

 

Создание алиаса

  • Открыть диспетчер

  • Выбрать тип СУБД из списка выпадающего списка кнопки "New alias"

  • Заполнить поле "Request alias" - допускается указывать через пробел несколько слов

  • В поле "Request text" добавить запрос

  • Сохранить нажав кнопку "Save"

Поле "Comment" информационное, смысловой нагрузки не имеет

Для алиаса так же доступен просмотр плана выполнения.

5. Хинты редактора

Хинт - это подсказка движку редактора для выполнения дополнительных действий.

Каждый хинт должен располагаться на отдельной строке, символ ; в конце указывается.

  • print_on - включить вывод информации на вкладку Output текущего листа редактора запросов.

При этом информация не отображается в сетке, программа открывает курсор, обходит весь набор данных и выводит информацию в поле, после закрывает курсор

  • print_off - отключить вывод информации в окно Output текущего листа

  • clear_out - очистить вкладку Output

  • colname_on - Показывать имена колонок выводимых данных

  • colname_off - Не показывать имена колонок выводимых данных (по умолчанию)

  • cstr('') - Вывести строку в скобках. Строка должна быть обрамлена одинарными кавычками

  • delim() - добавить разделитель указанный в скобках для строк в выводе. В виде разделителя может использоваться любой знак, строка, цифры. Одинарные кавычки не требуются

  • qpr_on - включение вывода текста выполненного запроса

  • qpr_off - отключение вывода текста выполненного запроса (по умолчанию)

  • rdelim_on - отображать разделитель колонок в выводе

  • rdelim_off - не отображать разделитель колонок в выводе (по умолчанию)

  • snum_on - добавить нумерацию строк в выводе

  • snum_off - не показывать нумерацию строк в выводе (по умолчанию)

Пример

 
6. Процедура OPENLIST

Процедура openlist служит для возможности использования соединения с БД одного листа в другом.

Процедура может использоваться в 2 операциях: create и insert

ВАЖНО: перенос данных осуществляется в текстовом виде, т.е. на стороне приемника таблица будет создана с полями типа Text или varchar в зависимости от СУБД

Использование процедуры в конструкции CREATE

Синтаксис:

create table <имя таблицы> as openlist('<Имя листа>','<Запрос выполняемый на стороне источника>')

Требования:

  • запрещено экранирование кавычек внутри запроса

  • поддерживаются только типы данных которые можно привести к text

 

Пример

 

Лог выполнения:

The query: 24.04.2020 01:27:59
Query text: create table feature_usage_sta...
---------------------------------------------------------
Position: 42
##################Remote query##################
SELECT name,
detected_usages detected,
total_samples   samples,
currently_used  used,
to_char(last_sample_date,'DD-MM-YYYY:HH24:MI') last_sample,
sample_interval interval
FROM dba_feature_usage_statistics
where version = (select version from v$instance)
order by currently_used desc, name
##################Parameter##################
Remote list name: LIST1
Remote list type: ORACLE
Current list name: LIST3
Current list type: MSSQL
####################Command####################
create table feature_usage_statistics as
Code: 507
Count: 4
SELECT name,
detected_usages detected,
total_samples   samples,
currently_used  used,
to_char(last_sample_date,'DD-MM-YYYY:HH24:MI') last_sample,
sample_interval interval
FROM dba_feature_usage_statistics
where version = (select version from v$instance)
order by currently_used desc, name
feature_usage_statistics
Toper: 3
create table feature_usage_statistics ( "NAME" Text, "DETECTED" Text, "SAMPLES" Text, "USED" Text, "LAST_SAMPLE" Text, "INTERVAL" Text)
Table create - successful
Starting load data
Rows transferred: 243 [ALL ROWS:243]
Run time:  0.592c.
Log operation
C:\CerebroSQL3.8.0.1x64\tmp\lists\openist2020_04_24_012759.log

Файл: 

openist<date>.log - файл журнала.

openist<date>.query - файл ошибок, при перехвате ошибки при обработки строки в файл сбрасывается как текст ошибки так и запрос