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> Статическую компиляцию туда уже завезли?
Прошу прощения, не копенгаген, но любопытно... это что?
Здравствуйте, aios, Вы писали:
A>я привел простой пример с процедурой, которая возвращает датасет. когда узнал через какую жопу и с каким количеством лишнего текста делается на оракле, сказать что я офигел — это промолчать. A>и из-за этой перегруженности код у процедур, которые приходится поддерживать очень плохо читается. A>еще бесит отсутствие временных таблиц в том понимании, как они используются в mssql. приходится писать хитровыкрученные запросы, опять же совершенно нечитабельные....
Да, многословность -- большой минус pl/sql. Я тоже от него не в восторге, но при всех неудобствах он обеспечивает надежность кода. От t-sql же веет некой скриптовостью и игрушечностью, работа с ним напоминает написание shell-скриптов, вроде и коротко, и удобно, но не покидает чувство, что может в любой момент сломаться.
Здравствуйте, 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" выползает лишь в рантайме. и это пол беды. упрощенный синтаксис мсскл вот к такой хрени сплошь и рядом приводит. майкрософт явно люто ненавидит именно разработчиков, раз такое предлагает юзать.
В данном случае по моему это не проблема синтаксиса, а непонятки со скопом временных таблиц...
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
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" выползает лишь в рантайме. и это пол беды. упрощенный синтаксис мсскл вот к такой хрени сплошь и рядом приводит. майкрософт явно люто ненавидит именно разработчиков, раз такое предлагает юзать. ·>В данном случае по моему это не проблема синтаксиса, а непонятки со скопом временных таблиц...
это проблема скриптовой натуры мсскл. помню были и чудовищные проблемы и с рекомпиляциями запросов из-за временных таблиц. именно потому что структуры динамические, известны лишь в рантайм и могут в рантайме подмениваться.