Найдено 60 результатов

Nag
Ср 12 дек 2012 07:08
Форум: dbForge for Oracle
Тема: исчезает кнопка закрытия вкладки редактора
Ответы: 2
Просмотры: 5430

исчезает кнопка закрытия вкладки редактора

Имеем следующее состояние вкладок редакторов на панели
Изображение
Теперь, если внести изменения в редактор, то ширина вкладки станет чуть больше из-за появления "звездочки". Как следствие, на вкладке исчезает "крестик" для ее закрытия.
Изображение
Nag
Ср 12 дек 2012 06:44
Форум: dbForge for Oracle
Тема: переход к определению
Ответы: 3
Просмотры: 6017

Re: переход к определению

Вопрос с новым объектом снимается. Я искал в "Сервис|Настройка...", вкладка "Команды". В категории "Стандартные" есть, конечно, команда "Объект базы данных...", но слово "новый" там напрочь отсутствует, посему я без всякой задней мысли его пропустил.
dbForge Studio for Oracle из контекста определяет предполагаемый тип объектов и поиск производится только среди предполагаемых типов объекта.
Я бы на Вашем месте так категорично не заявлял, что он "определяет". Надо быть скромнее: "пытается определить". Вот пара примеров его неудачных "попыток" (NB: примеры бессмысленны до абсурда и призваны просто продемонстрировать недоработки).
Пример №1

Код: Выделить всё

begin
    if 1 in (my_func('1'), my_func('2')) then
        null;
    end if;
end;
Попытка перехода к определению в первом вызове MY_FUNC не увенчалась успехом. Но, как это ни парадоксально, переход к определению во втором вызове MY_FUNC происходит.
Пример №2

Код: Выделить всё

begin
    -- блок 1
    for v_cur in (
        select
            v.id,
            v2.val as val_2,
            (
                select
                    v3.val
                from
                    my_view v3
                where
                    v3.id = v.id
            ) as val_3
        from
            my_view v
            left join my_view v2 on v2.id = v.id
    )
    loop
        null;
    end loop;

    -- блок 2
    for v_cur in (
        with my_cte as (
            select
                v.id,
                v2.val as val_2,
                (
                    select
                        v3.val
                    from
                        my_view v3
                    where
                        v3.id = v.id
                ) as val_3
            from
                my_view v
                left join my_view v2 on v2.id = v.id
        )
        select
            mc.val_2,
            mc.val_3,
            v4.val as val_4
        from
            my_cte mc
            left join my_view v4 on v4.id = mc.id
    )
    loop
        null;
    end loop;
end;
В части кода, помеченном комментарием "блок 1", все переходы к определению вьюхи MY_VIEW осуществляются. Но если слегка видоизменить запрос под курсором (см. код под комментом "блок 2"), то уже НИ В ОДНОМ из четырех использований вьюхи MY_VIEW переход не выполняется. Хотя "контекст" остался тем же: SELECT ... FROM ..., LEFT JOIN ... ON ...
И это просто пара несложных примеров, когда ваш якобы "нужный и полезный" анализ "контекста" вызова "спотыкается" на ровном месте. И именно поэтому я призываю разработчиков dbForge избавиться от идеи "параноидального парсера" и просто пытаться найти среди объектов базы слово под курсором, как это сделали разработчики того же IBExpert, TOAD и прочих сред, избавив и пользователей от лишнего геморроя, и в первую очередь себя от "изобретения велосипеда".
Nag
Вт 11 дек 2012 05:43
Форум: dbForge for Oracle
Тема: переход к определению
Ответы: 3
Просмотры: 6017

переход к определению

Допустим, имеем некую VIEW с именем MY_VIEW. Если в SQL-редакторе написать просто и нажать "Перейти к определению" (F12), то получим сообщение
Невозможно перейти к определению. Не найден источник навигации.
Но если написать

Код: Выделить всё

select * from my_view
поставить курсор на имя MY_VIEW и нажать F12, то чудесным образом откроется редактор вьюхи.

Внимание, вопрос! (с) Почему нельзя просто взять "слово" под курсором и поискать его среди имен объектов, вместо того, чтобы маниакально "по контексту" пытаться понять, что под курсором сейчас "находится" именно какой-то объект БД? Насколько я понимаю, такой вот анализ "контекста" зачастую является источником крайне раздражающей ошибки о "невозможности перейти к определению".

И еще один "наболевший" момент. Убедительная просьба реализовать возможность "выноса" на toolbar кнопок создания новых объектов схемы: пакет, функция, вьюха, таблица и т.д. Дабы не "рыться" постоянно в дереве объектов в поисках узла нужного типа для создания нового объекта этого типа.
Nag
Чт 06 дек 2012 05:52
Форум: dbForge for Oracle
Тема: кривой отступ по Tab
Ответы: 2
Просмотры: 5155

кривой отступ по Tab

Имеем некоторый текст в редакторе, курсор стоит в начале строки (первый скрин, слева). Нажимаем Shift+Up, дабы выделить строку (первый скрин, справа).
Изображение
Теперь нажимаем Tab (второй скрин, слева). Видим, что выделение странным образом "поползло" еще по одной строке. Ну и второе нажатие Tab приводит к тому, что и вторая строка (со скобкой) тоже начинает "сдвигаться" (второй скрин, справа).
Изображение
По-моему, такое поведение ненормально. А по-вашему?

Версия dbForge Studio for Oracle 3.1.243.1
Nag
Вт 06 ноя 2012 06:58
Форум: dbForge for Oracle
Тема: "тормоза" приложения
Ответы: 12
Просмотры: 16850

"тормоза" приложения

Частенько, dbForge конкретно "тормозит" при выполнении даже самых элементарных запросов из SQLEditor'а. При этом очевидно, что тормоза вызваны не самим запросом, а именно средой, которая чем-то "занимается" перед его непосредственным выполнением. Аналогичная печальная картина наблюдается, например, и просто при открытии коннекта. Первое, что бросилось в глаза при попытке "подсмотреть", а что же все-таки там происходит в момент "подвисаний",- это вот этот прелюбопытнейший запросец:

Код: Выделить всё

select
    u.username
from
    all_users u
where
    exists(
        select
            1
        from
            all_objects o
        where
            o.owner = u.username)

union all

select
    'PUBLIC'
from
    dual

order by
    1
Он выполняется средой достаточно часто и время его выполнения составляет 5 (!!!) секунд. Ну и план выполнения оставляет желать лучшего.
Убедительная просьба, хотя бы просто добавить условие

Код: Выделить всё

and rownum = 1
в выборку из ALL_OBJECTS.

Версия сервера: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
Версия приложения: dbForge Studio for Oracle 3.1.219.1
Nag
Ср 31 окт 2012 07:49
Форум: dbForge for Oracle
Тема: кнопка приложения на TaskBar
Ответы: 3
Просмотры: 5720

кнопка приложения на TaskBar

Запускаю Ваше приложение. Пока оно грузится и на экране красуется splash, переключаюсь в окно другого приложения. В итоге, dbForge, конечно, запускается, но кнопки на панели задач не появляется. И если окно "другого" приложения развернуто на весь экран, то вообще не понятно, запустился ли dbForge. Ладно хоть на него в этот момент странным образом не "действует" сочетание Win+M, и после минимизации всех прочих "нормальных" окон, dbForge "обнаруживается" на экране, и после получения его окном фокуса, на панели задач гордо "выплывает" заветная кнопочка.

И еще пара "наболевших" замечаний:
1) Допустим, открыто тело пакета P1, в нем имеется вызов процедуры из пакета P2. Нажимаем F12 (перейти к определению). Открывается спецификация пакета P2. Не знаю как других, но лично меня в случае нажатия F12 всегда намного больше интересует РЕАЛИЗАЦИЯ процедуры, чем ее спецификация. В каком пакете она находится, как называется, что принимает на вход и что возвращает (хотя бы приблизительно) обычно уже понятно по контексту вызова. К тому же, вся эта информация все равно "дублируется" в теле пакета и ее там с таким же успехом можно "посмотреть". И уж если "переходить" именно в спецификацию - это принципиальный вопрос, то сделайте хотя бы возможность перехода из спецификации на реализацию.
2) Если спецификация пакета P2 уже открыта, то при нажатии F12 в точке вызова процедуры в пакете P1 выдается сообщение:
Документ "Package:XXX.P2(BASE)" уже открыт. Вы хотите закрыть его?
Зачем?! Чтобы что-то открыть надо сначала это что-то закрыть? При этом никаких несохраненных изменений в спецификации нет. Да еще и при ответе "Нет" выдается ошибка
Невозможно перейти к определению
З.Ы. версия dbForge Studio for Oracle 3.1.219.1
Nag
Ср 25 июл 2012 13:59
Форум: dbForge for Oracle
Тема: при редактировании VIEW не изменяется алиас
Ответы: 7
Просмотры: 9291

Re: при редактировании VIEW не изменяется алиас

Alexander писал(а):А механизм сохранения алиасов, при условии совпадении количества колонок, применим только для невалидных представлений.
Позвольте поинтересоваться, что призвана обозначать фраза "при условии совпадении количества колонок"? А с каких это пор количество полей в запросе VIEW и количество "выходных" алиасов для них может отличаться? Вроде бы, ORA-01730 еще никто не отменял.
И зачем вобще к инвалидным VIEW (и только к ним!) "применять" какие-то "механизмы"? Этот "механизм" специально для такой ситуации был разработан?
Системный архитектор: "Представляете, если кто-то отредактирует инвалидную вьюху и, не дай Бог, сделает ее валидной и сохранит, изменив алиасы. Это катастрофа! Надо обязательно предусмотреть механизм защиты от изменения алиасов инвалидной вьюхи".
Так это было?
Я сохраняю нормальную валидную вьюху, какая разница, в каком состоянии она была перед этим?
Nag
Ср 25 июл 2012 12:15
Форум: dbForge for Oracle
Тема: при редактировании VIEW не изменяется алиас
Ответы: 7
Просмотры: 9291

Re: при редактировании VIEW не изменяется алиас

Alexander писал(а):Таково поведение dbForge Studio for Oracle для невалидных представлений.
Представление V_TEST_MAIN после изменения в редакторе имени поля выборки является валидным и нормально сохраняется. Чем это сохранение принципиально отличается от сохранения любой другой отредактированной валидной вьюшки, где алиасы изменяются автоматом, согласно именам полей выборки?
Alexander писал(а):Есть вторая сторона медали, если были прописаны алиасы отличные от имени колонок, а нужно изменить имя колонки, то алиасы не будут утеряны.
Опять же, если у валидной вьюшки прописаны алиасы полей, отличные от имен в выборке, и я изменю выборку, то dbFogre молча "утеряет" перекрывающие алиасы вьюшки, приведя их в соответствие с выборкой. Почему в этом случае разработчики dbForge сочли возможным изменить алиасы, а в случае с редактированием изначально инвалидной вьюшки - нет?

Пример. Создаем новую вьюшу с ипользованием редактора, на вкладке "Столбцы" для поля выборки F01 задаем алиас A01, сохраняем. Получаем такой текст:

Код: Выделить всё

CREATE OR REPLACE VIEW XXX.V_TEST_01 (
  A01
)
AS
  select
    1 as f01
from
    dual;
Переключаемся на вкладку "Дизайн" и в запросе исправляем f01 на n01, сохраняем. На вкладке "Текст" видим:

Код: Выделить всё

CREATE OR REPLACE VIEW XXX.V_TEST_01 (
  N01
)
AS
  select
    1 as n01
from
    dual;
Nag
Пн 23 июл 2012 09:20
Форум: dbForge for Oracle
Тема: объект был изменен вне редактора
Ответы: 3
Просмотры: 6053

объект был изменен вне редактора

Создаем тестовый пакет:

Код: Выделить всё

create or replace package nag_test as

procedure my_proc(
    param1 number);

end nag_test;
/

create or replace package body nag_test as

procedure my_proc(
    param1 number)
is
begin
    null;
end my_proc;

end nag_test;
Открываем спецификацию и тело пакета в редакторах. Идем в редактор ТЕЛА пакета, изменяем процедуру, добавив ей еще один входной параметр:

Код: Выделить всё

procedure my_proc(
    param1 number,
    param2 number)
is
begin
    null;
end my_proc;
НЕ компилим, переключаемся в редактор спецификации пакета, жмякаем "Компилировать" (Ctrl+F7). Получаем следующие сообщения:
Тело пакета 'XXX.NAG_TEST' было успешно скомпилировано.
Следом
Пакет 'XXX.NAG_TEST' был успешно скомпилирован.
Следом
Объект 'XXX.NAG_TEST (Тело)' был изменен вне редактора. Перезагрузить?
Само собой, вне редактора я ничего не менял. Если ответить "Да", то изменения (добавление параметра) будут потеряны, если "Нет" - то тело пакета так и будет помечено "звездочкой" (изменено и не сохранено). При этом никаких ошибок и предупреждений в окошке "Список ошибок" не появляется и пакет остается валидным.
И еще один момент. Если теперь сначала компильнуть тело пакета (с двумя входными параметрами), а потом снова спецификацию (с одним параметром), то в окошке "Список ошибок" ошибка
PLS-00323: subprogram or cursor 'MY_PROC' is declared in a package specification and must be defined in the package body
будет отображена дважды: как ошибка и как предупреждение.
Nag
Пн 23 июл 2012 08:09
Форум: dbForge for Oracle
Тема: при редактировании VIEW не изменяется алиас
Ответы: 7
Просмотры: 9291

Re: при редактировании VIEW не изменяется алиас

Нет, речь шла не про каскадное переименование. А про "переименование" алиаса ТОЛЬКО в той вьюхе, которую в данный момент редактируем. В случае с V_TEST_BASE такое автоматичекское "переименование" имело место быть, а вот при редактировании V_TEST_MAIN алиас остался "старым", несмотря на переименование поля. Т.е. нет "одинаковости" поведения редактора VIEW при одних и тех же действиях разработчика.
Nag
Пн 23 июл 2012 06:39
Форум: dbForge for Oracle
Тема: при редактировании VIEW не изменяется алиас
Ответы: 7
Просмотры: 9291

при редактировании VIEW не изменяется алиас

Создаем пару вьюшек:

Код: Выделить всё

create or replace view v_test_base(
    f01
)
as
select
    1 as f01
from
    dual;

create or replace view v_test_main(
    f01
)
as
select
    f01
from
    v_test_base;
Открываем обе вьюшки в редакторах. В первой VIEW в редакторе изменяем алиас поля в запросе на my_data, сохраняем (Ctrl+S). На вкладке "Текст" видим, что алиас вьюшки тоже автоматом изменился:

Код: Выделить всё

CREATE OR REPLACE VIEW V_TEST_BASE (
  MY_DATA
)
AS
select
    1 as my_data
from
    dual;
Теперь, очевидно, вторая VIEW стала инвалидной. Посему, аналогично меняем в редакторе имя поля в запросе на my_data и жмякаем "Сохранить". После этого на вкладке "Текст" видим, что алиас вьюшки остался прежним, несмотря на изменение имени поля в запросе:

Код: Выделить всё

CREATE OR REPLACE VIEW V_TEST_MAIN (
  F01
)
AS
select
    my_data
from
    v_test_base;
Привыкнув к тому, что алиасы VIEW изменяются автоматичеки в соответствии с именами полей (как в первом случае), я не ожидал такого подвоха со стороны dbForge во втором, и не сразу втупил, почему у меня приложение грязно ругается про "недопустимый идентификатор" при обращении ко второй VIEW, хотя поля указаны (казалось бы) правильно.
Вопрос к разрабам: это так и задумано?
Nag
Пн 02 июл 2012 06:41
Форум: dbForge for Oracle
Тема: public database link
Ответы: 2
Просмотры: 4838

public database link

Имеется public database link и следующие связанные с ним проблемы:
1) В дереве объектов вобще не отображаются существующие public database link
2) Выполняем в SQL-editor запрос вида

Код: Выделить всё

select * from v_nag@test_link
где v_nag - view в базе, на которую настроек db link.
При выключенном постраничном режиме если поставить фокус в сетку с данными и нажать Ctrl+End, то отобразится только 499 записей. Хотя на самом деле записей, возвращаемых запросом, гораздо больше. Надо отметить, что в режиме постраничного отображения данных всё нормально и видны все записи.
Кстати, после переключения обратно из постраничного режима сетка показывает уже 524 записи вместо 499, что всё равно не соответствует действительности.

Версия приложения: dbForge Studio for Oracle 3.1.206.1
Версия СУБД: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options
Nag
Пн 25 июн 2012 08:41
Форум: dbForge for Oracle
Тема: И снова про лже-удаление...
Ответы: 5
Просмотры: 6288

Re: И снова про лже-удаление...

А при чем тут, пардон, версия сервера? Это сама СУБД уведомляет приложение, что объект был удален? Мне, конечно, не жалко:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options

Проверил в версии dbForge Studio for Oracle 3.1.206.1 - воспроизводится. Небольшие уточнения по воспроизведению: подключаемся к базе (проекту), разворачиваем узел "Таблицы" (чтобы они все "прогрузились" в TreeView), открываем SQL-Editor и выполняем скрипты (см. выше) по созданию таблицы и триггера. Таблица должна именно создаваться (CREATE), т.е. ее не должно быть до этого в "прогруженном" дереве объектов. Дальше всё как описано выше.
Nag
Ср 06 июн 2012 07:39
Форум: dbForge for Oracle
Тема: Ошибочные подсказки по параметрам перегруженных процедур
Ответы: 2
Просмотры: 4931

Ошибочные подсказки по параметрам перегруженных процедур

Создаем пакет с парой перегруженных процедур

Код: Выделить всё

create or replace package xxx.nag_test as

procedure test_proc(
    a_id number, 
    a_value date);
    
procedure test_proc(
    a_id number, 
    a_value varchar2);

end nag_test;
/

create or replace package body xxx.nag_test as

procedure test_proc(
    a_id number, 
    a_value date)
is
begin
    null;
end;
    
procedure test_proc(
    a_id number, 
    a_value varchar2)
is
begin
    null;
end;

end nag_test;
/
Обновляем список объектов, пишем анонимный блок, в котором вызываем подсказу по параметрам процедуры и видим нижеследующее.
Первый вариант процедуры
Изображение
Второй вариант процедуры
Изображение

Версия dbForge Studio for Oracle 3.1.198.1
Nag
Ср 06 июн 2012 07:04
Форум: dbForge for Oracle
Тема: Недоработка: не обновляется кеш автоподстановки
Ответы: 5
Просмотры: 6966

Re: Недоработка: не обновляется кеш автоподстановки

У меня он есть на панели. Если нет - открой меню tooolbar "Добавить или удалить кнопки"|"Настройка..." (или правой кнопкой на toolbar и "Настройка..."), вкладка "Команды", категория "Текст", команда "Обновить список объектов". Перетащи ее мышой на понравившийся toolbar.
Насчет shortcut - поддерживаю.