Здравствуйте, aios, Вы писали:
A>я привел простой пример с процедурой, которая возвращает датасет. когда узнал через какую жопу и с каким количеством лишнего текста делается на оракле, сказать что я офигел — это промолчать. A>и из-за этой перегруженности код у процедур, которые приходится поддерживать очень плохо читается. A>еще бесит отсутствие временных таблиц в том понимании, как они используются в mssql. приходится писать хитровыкрученные запросы, опять же совершенно нечитабельные....
Да, многословность -- большой минус pl/sql. Я тоже от него не в восторге, но при всех неудобствах он обеспечивает надежность кода. От t-sql же веет некой скриптовостью и игрушечностью, работа с ним напоминает написание shell-скриптов, вроде и коротко, и удобно, но не покидает чувство, что может в любой момент сломаться.
Gt_>>·>А что это даёт? Вместо конкретной ошибки "table 't' not found" будет невнятное "procedure invalid"? Gt_>>накатив sql скрипты, меняющие структуры таблиц ораклойд сразу видит, где какой код развалился. ·>А как это выглядит? Ну выполняю я "drop table t" — как я узнаю поломались ли хранимки и какие?
разработчику гуи подсветит инвалидные оъекты, метаданные данные всем доступны
SQL> select object_type,count(*) from user_objects where status = 'INVALID'
2 group by object_type;
OBJECT_TYPE COUNT(*)
------------------ ----------
PACKAGE BODY 4
PROCEDURE 61
VIEW 3
Gt_>>в мсскл же "table 't' not found" выползает лишь в рантайме. и это пол беды. упрощенный синтаксис мсскл вот к такой хрени сплошь и рядом приводит. майкрософт явно люто ненавидит именно разработчиков, раз такое предлагает юзать. ·>В данном случае по моему это не проблема синтаксиса, а непонятки со скопом временных таблиц...
это проблема скриптовой натуры мсскл. помню были и чудовищные проблемы и с рекомпиляциями запросов из-за временных таблиц. именно потому что структуры динамические, известны лишь в рантайм и могут в рантайме подмениваться.
A>Есть что-то хоть приближалось по удобству и неглючности к Management Studio, желательно тоже бесплатное?
Для oracle выбор небольшой: PL/SQL Deloper, SQL Navigator, TOAD, dbForge да Oracle SQL Developer.
PL/SQL Deloper наиболее работоспособный вариант
SQL Navigator не зашел, вообще не смог с ним работать
TOAD больше для админских вещей, удобно смотреть блокировки
dbForge почти не работал
Oracle SQL Developer хорошая вещь для развития силы духа, медитации, тренировки терпения, но если не познал дзен лучше не пользоваться.
У каждой из этих софтин есть недостатки (я в итоге свою приблуду написал). Но у жабы есть прикольная фича: если на вьюхе висит триггер, жаба не даст ее сразу перекомилировать, сначала выдаст предупреждение. Остальные не заморачиваются, и отсутсвие триггера замечаешь уже продакшене
Есть что-то хоть приближалось по удобству и неглючности к Management Studio, желательно тоже бесплатное?
Сегодня блин последняя капля была. в SQL Navigator делаю скрипт, проверяю его. возвращает данные, отправляю чтобы выполнили на продакте. возвращают обратно с ошибкой какие-то проблемы со скобками. проверил — действительно две лишних скобки. но это сволочь продолжает выдавать результат и на первый взгляд корректный. вот как такое возможно??? запустил pl/sql developer — работает правильно — в смысле выдает ошибку... причем SQL Navigator даже перезапускал — ему пофиг на скобки и ораклу при этом почему-то тоже
Для оракла есть только Toad — работает плохо, куча багов + программа платная. Но это лучшая gui программа для оракла и единственная в которой можно сносно работать с ораклом, т.е. посмотреть какие в бд есть таблички, делать запросы к бд подебажить скрипты и т.д.. Но, если надо писать скрипты, то удобнее пользоваться нормальным текстовым редактором(vim/emacs/visual studio), а потом выполнять скрипт из коммандной строки.
Підтримати Україну у боротьбі з країною-терористом.
J>Для оракла есть только Toad — работает плохо, куча багов + программа платная. Но это лучшая gui программа для оракла и единственная в которой можно сносно работать с ораклом, т.е. посмотреть какие в бд есть таблички, делать запросы к бд подебажить скрипты и т.д.. Но, если надо писать скрипты, то удобнее пользоваться нормальным текстовым редактором(vim/emacs/visual studio), а потом выполнять скрипт из коммандной строки.
он у меня кстати почему-то вообще не хочет коннектиться к серверу. почему — пока не разбирался
вообще не понимаю, почему оракл этим не озаботился. вроде достаточно мощная БД. до МС сиквела ей далековато, но все ж...
Здравствуйте, aios, Вы писали:
a> Есть что-то хоть приближалось по удобству и неглючности к Management Studio, желательно тоже бесплатное?
Datagrip смотрел? Небесплатный правда...
Из всего этого для разработки самый удобный pl/sql developer, но тоже не идеал. Из бесплатного есть Oracle SQL Developer, но он у меня не зашел. Из свободного есть куча сред, написанных на Java, я для просмотра данных иногда пользуюсь SQL Workbench/J, но для написания кода он по функциональности чуть лучше Блокнота.
DO>У каждой из этих софтин есть недостатки (я в итоге свою приблуду написал). Но у жабы есть прикольная фича: если на вьюхе висит триггер, жаба не даст ее сразу перекомилировать, сначала выдаст предупреждение. Остальные не заморачиваются, и отсутсвие триггера замечаешь уже продакшене
вот не понимаю. оракл вроде не бедная совсем контора. чего не сделать нормальный инструмент? почему майкрософту не западло это было сделать?
A>вот не понимаю. оракл вроде не бедная совсем контора. чего не сделать нормальный инструмент? почему майкрософту не западло это было сделать?
Причем тут бедная или не бедная? Майкософт делал ставку на разработчиков (Developers! Developers! Developers! Developers!), а Oracle на пользователей (включая админов).
Здравствуйте, Dym On, Вы писали:
A>>вот не понимаю. оракл вроде не бедная совсем контора. чего не сделать нормальный инструмент? почему майкрософту не западло это было сделать? DO>Причем тут бедная или не бедная? Майкософт делал ставку на разработчиков (Developers! Developers! Developers! Developers!), а Oracle на пользователей (включая админов).
забавно.
mssql:
create procedure p as select t.id, t.name from t
одна строчка. на оракле придется городить pipeline функцию, определять package, тип, заголовок, тело, в теле курсор, короче скрипт раздуется на минимум страницу кода.
ну и кому бы решить проблему нормальной среды разработки было бы казалось актуальнее?
Здравствуйте, amironov79, Вы писали:
A> Настоящие оракловские гуру пишут sqlplus-скрипты любой сложности с помощью ed.
Это для слабаков, крутые перцы прямо с консоли фигачат .
Здравствуйте, Dym On, Вы писали:
DO>Здравствуйте, amironov79, Вы писали:
A>> Настоящие оракловские гуру пишут sqlplus-скрипты любой сложности с помощью ed. DO>Это для слабаков, крутые перцы прямо с консоли фигачат .
Как раз наоборот. Чем с его помощью файл отредактировать, проще этот файл заново перенабрать.
Здравствуйте, Dym On, Вы писали:
A>>Есть что-то хоть приближалось по удобству и неглючности к Management Studio, желательно тоже бесплатное? DO>Для oracle выбор небольшой: PL/SQL Deloper, SQL Navigator, TOAD, dbForge да Oracle SQL Developer.
Есть еще бесплатный TOra. Но он сильно на любителя. Местами вроде и ничего, но большей частью глюкавый. Хотя как именно бесплатная альтернатива весьма годится.
Я для Oracle 9i пользуюсь DataGrip (ну точней не именно им, а панелькой Database в Idea, но, насколько я понимаю, это то же самое). Работает не идеально, но в целом нормально. С хранимками не работает. Для них использую SQL Developer кажется 4-й версии, он хорошо работает. Коллега пользует SQL Navigator 4-й версии. Раньше ещё использовал Squirrel SQL, прекрасный инструмент.
TMU>>Ахаха. Неплохой заход, почему-то никто не реагирует. A>Здесь же в основном разработчики на более вменяемых языках чем pl/sql и t-sql, поэтому про мощность никто не понял.
Здравствуйте, TMU_1, Вы писали:
TMU>>>Ахаха. Неплохой заход, почему-то никто не реагирует. A>>Здесь же в основном разработчики на более вменяемых языках чем pl/sql и t-sql, поэтому про мощность никто не понял.
TMU>Все на JS пишут )?
TMU>>Ахаха. Неплохой заход, почему-то никто не реагирует. K>ви есть что-то возразить? K>лично мне, когда с mssql перешел на оракле (надеюсь временно) чувствовал, что мне просто перекрыли кислород.
То есть какие-то вещи делаются не так, как ты привык?
TMU>То есть какие-то вещи делаются не так, как ты привык?
я привел простой пример с процедурой, которая возвращает датасет. когда узнал через какую жопу и с каким количеством лишнего текста делается на оракле, сказать что я офигел — это промолчать.
и из-за этой перегруженности код у процедур, которые приходится поддерживать очень плохо читается.
еще бесит отсутствие временных таблиц в том понимании, как они используются в mssql. приходится писать хитровыкрученные запросы, опять же совершенно нечитабельные....
Здравствуйте, amironov79, Вы писали:
a> TMU>>Ахаха. Неплохой заход, почему-то никто не реагирует. a> K>ви есть что-то возразить? a> Статическую компиляцию туда уже завезли?
Прошу прощения, не копенгаген, но любопытно... это что?
Здравствуйте, Somescout, Вы писали:
S>А можете показать (хотя бы приблизительно) как это выглядит на оракле? А то я в сторону T-SQL ругался, а есть оказывается ещё более страшные диалекты?
Не все так страшно, просто многословный паскалеобразный язык без сахара:
CREATE OR REPLACE PACKAGE test_ed_pkg IS
TYPE ed_rec_t IS RECORD(
num INT,
str VARCHAR2(2000));
TYPE ed_tab_t IS TABLE OF ed_rec_t;
FUNCTION get_pipe RETURN ed_tab_t
PIPELINED;
END;
/
CREATE OR REPLACE PACKAGE BODY test_ed_pkg IS
FUNCTION get_pipe RETURN ed_tab_t
PIPELINED IS
rec ed_rec_t;
BEGIN
FOR rec IN (SELECT 1 num, 'one' str FROM dual) LOOP
PIPE ROW(rec);
END LOOP;
RETURN;
END;
END;
/
SELECT * FROM TABLE(test_ed_pkg.get_pipe);
Кстати, если в t-sql надо дополнительно обработать результат процедуры, то коротко тоже не получится.
A>create procedure p as select t.id, t.name from t
A>
A>одна строчка. на оракле придется городить pipeline функцию, определять package, тип, заголовок, тело, в теле курсор, короче скрипт раздуется на минимум страницу кода. A>ну и кому бы решить проблему нормальной среды разработки было бы казалось актуальнее?
ну в пхп тоже на первый взгляд студента синтаксис лучше, но на таком обрубке, без строгой типизации, не реально серьезную бизнес логику написать. кастрат t-sql в мире субд это пых-пых. в оракле четко требуется определить входящие-выходящие типы, реализовано отслеживание зависимостей. т.е. если ты удалил таблицу t весь зависимой от таблицы код пометится invalid. а у мсскл же скриптовая дребень, которая сегодня одну структуру возвращает, завтра другую. такому конечно синтаксис много проще можно делать, серьезную логику то на t-sql делать не будут. потому весь фин сектор с суровой бизнес логикой сидит исключительно на оракле.
A>>вот не понимаю. оракл вроде не бедная совсем контора. чего не сделать нормальный инструмент? почему майкрософту не западло это было сделать? DO>Причем тут бедная или не бедная? Майкософт делал ставку на разработчиков (Developers! Developers! Developers! Developers!), а Oracle на пользователей (включая админов).
если бы майкрософт делало бы ставку на разработчиков то t-sql был бы нормальным языком, с отловом ошибок при компиляции, а не расширением от sql. там же нет базового, типа отслеживания зависимостей. опять же, девелоперам нужен полноценный тул, а майкрсофт в судии даже не посмотреть что там в субд делается. нужно отдельный инструмент запускать с счетчиками.
Здравствуйте, Gt_, Вы писали:
Gt_> A>одна строчка. на оракле придется городить pipeline функцию, определять package, тип, заголовок, тело, в теле курсор, короче скрипт раздуется на минимум страницу кода. Gt_> A>ну и кому бы решить проблему нормальной среды разработки было бы казалось актуальнее? Gt_> ну в пхп тоже на первый взгляд студента синтаксис лучше, но на таком обрубке, без строгой типизации, не реально серьезную бизнес логику написать. кастрат t-sql в мире субд это пых-пых. в оракле четко требуется определить входящие-выходящие типы, реализовано отслеживание зависимостей. dm_sql_referencing_entities и т.п.
Gt_>т.е. если ты удалил таблицу t весь зависимой от таблицы код пометится invalid.
А что это даёт? Вместо конкретной ошибки "table 't' not found" будет невнятное "procedure invalid"?
Gt_>>т.е. если ты удалил таблицу t весь зависимой от таблицы код пометится invalid. ·>А что это даёт? Вместо конкретной ошибки "table 't' not found" будет невнятное "procedure invalid"?
накатив sql скрипты, меняющие структуры таблиц ораклойд сразу видит, где какой код развалился. в мсскл же "table 't' not found" выползает лишь в рантайме. и это пол беды. упрощенный синтаксис мсскл вот к такой хрени сплошь и рядом приводит. майкрософт явно люто ненавидит именно разработчиков, раз такое предлагает юзать.
Здравствуйте, Gt_, Вы писали:
Gt_>·>А что это даёт? Вместо конкретной ошибки "table 't' not found" будет невнятное "procedure invalid"? Gt_>накатив sql скрипты, меняющие структуры таблиц ораклойд сразу видит, где какой код развалился.
А как это выглядит? Ну выполняю я "drop table t" — как я узнаю поломались ли хранимки и какие?
Gt_>в мсскл же "table 't' not found" выползает лишь в рантайме. и это пол беды. упрощенный синтаксис мсскл вот к такой хрени сплошь и рядом приводит. майкрософт явно люто ненавидит именно разработчиков, раз такое предлагает юзать.
В данном случае по моему это не проблема синтаксиса, а непонятки со скопом временных таблиц...
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай