powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Циклы и IF'ы в Oracle по сравнению с MS SQL
134 сообщений из 134, показаны все 6 страниц
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35219093
Diablas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно,вопрос больше к знатокам Оракла... Но в сравнении с MS SQL'ем.
Недавно спорили мы с одним человеком на давнюю тему MSSQL vs. Oracle и среди прочего затронули вопрос написания сторед-процедур.
Он утерждает,что в Oracle нет таких конструкций,как IF и циклы (я слабо себе представляю многие мои сторед-процедуры без этого).Я же стоял на том,что ну не может такая серьезная система,как Оракл,существовать без таких простых вещей,как,например,IF.Он доказывал,что может и существует.

Вобщем,отсюда вопрос... Есть ли аналог MSSQL'ных IF'ов и циклов (например,WHILE) в Oracle или нет.

Спасибо и извиняюсь за такой несколько ламерский вопрос. :)
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35219099
Фотография !!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В PL/SQL есть конструкции
Код: plaintext
1.
2.
3.
4.
5.
6.
if <> then
...
elsif <> then
...
else
...
end if;
и
Код: plaintext
1.
2.
 FOR i IN  1  ..  10  LOOP
 ...
 END LOOP;
В SQL вместо MSSQL-ного if используется CASE ... END или функция decode()
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35219113
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
!!!В SQL вместо MSSQL-ного if используется CASE ... END или функция decode()
В MS SQL в SQL запросе if не используется.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35219145
Фотография !!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк !!!В SQL вместо MSSQL-ного if используется CASE ... END или функция decode()
В MS SQL в SQL запросе if не используется.Вероятно, я ошибся, т.к. опыт работы с этим продуктом у меня минимальный :-) Помню что некая конструкция, аналогичная оракловому CASE, в MS SQL Server существовала.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35219167
Diablas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В MSSQL есть IF,но он действительно в запросе не используется,в запросе используется CASE,например
Код: plaintext
SELECT field1, CASE field2 WHEN значение THEN другое значение ELSE еще значение END, field3
Но в сторед-процедуре можно написать
Код: plaintext
1.
2.
3.
4.
IF условие BEGIN
SELECT бла-бла-бла
ELSE
SELECT дргое бла-бла-бла
END

Вот. :)
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35219375
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Diablas пишет:

> Он утерждает,что в Oracle нет таких конструкций,как IF и циклы (я слабо
> себе представляю многие мои сторед-процедуры без этого).

Он и прав, и не прав. Дело в том, что в ORACLE, в отличие от MSSQL,
где язык один - TransactSQL - и для процедур, и для триггеров, и для
запросов, языков у СУБД два - SQL и PL/SQL. В первом нет ни IF, ни
циклов (CONNECT BY не в счет). Но на нем не пишутся ни процедуры,
ни триггера. Они пишутся на PL/SQL. А там есть уже все.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229011
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivMSSQL,где язык один - TransactSQL - и для процедур, и для триггеров, и для
запросов,А когда TransactSQL стал языком запросов?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229035
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyА когда TransactSQL стал языком запросов?

Он был им всегда. :)
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229068
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey пишет:

> А когда TransactSQL стал языком запросов?
Со своего рождения.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229078
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Он и прав, и не прав. Дело в том, что в ORACLE, в отличие от MSSQL,
где язык один - TransactSQL - и для процедур, и для триггеров, и для
запросов, языков у СУБД два - SQL и PL/SQL.
не стоит принимать на веру все, что пишут на заборе, тьфу на MSDN ... ну не разобрались там, в том что SQL это вообще-то декларативный язык, а язык процедур - процедурный, ну бывает
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229100
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!не стоит принимать на веру все, что пишут на заборе, тьфу на MSDN ... ну не разобрались там, в том что SQL это вообще-то декларативный язык, а язык процедур - процедурный, ну бывает

Угу. Тока что PL\SQL, что T-SQL считаются процедрными расширениями декларативного SQL. Тока в MS не стали его дробить на два.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229137
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin
Угу. Тока что PL\SQL, что T-SQL считаются процедрными расширениями декларативного SQL. Тока в MS не стали его дробить на два.
нифига, где-то на MSDN было забавное определение сваливающее декларативность и процедурность в кучу, вечерком поищу.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229256
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! пишет:
> не стоит принимать на веру все, что пишут на заборе, тьфу на MSDN ... ну
> не разобрались там, в том что SQL это вообще-то декларативный язык, а
> язык процедур - процедурный, ну бывает

Transact SQL - это один язык, включающий как подязык SQL (с расширениями).
Он и декларативный, и императивный одновременно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229571
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv Bogdanov AndreyА когда TransactSQL стал языком запросов?

Со своего рожденияТо есть в запросах можно использовать любые конструкции этого языка? Если нет, то языком запросов является не TransactSQL, а некое его подмножество.

MasterZivTransact SQL - это один язык, включающий как подязык SQL (с расширениями).
Он и декларативный, и императивный одновременно.Так в чем же разница с PL/SQL? Только в том, что Oracle терминологически разделил декларативную и процедурную части, а MSSQL решил терминологией себя не озабачивать. Количество имеющихся синтаксических конструкций практически одинаково.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229645
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТо есть в запросах можно использовать любые конструкции этого языка?

Что значит "любые конструкции"?! Как прикажете цикл в запросе использовать?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229646
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey wrote:
> Так в чем же разница с PL/SQL?
А Вы знакомы с PL/SQL?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229655
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin авторТо есть в запросах можно использовать любые конструкции этого языка?

Что значит "любые конструкции"?! Как прикажете цикл в запросе использовать?Ну этого я не знаю. Было утверждение, что TransactSQL - язык запросов, значит конструкции этого языка предназначены для написания запросов. Вот пусть автор утверждения и расскажет.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229664
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey пишет:

> То есть в запросах можно использовать любые конструкции этого языка?

Ну в общем да, но не везде можно использовать все конструкции.
Т.е. внутри SELECT-а написать IF например нельзя.
Но например послать батч (посылку на сервер) типа
Код: plaintext
1.
2.
3.
4.
5.
if some_condition
   select ... from a
else
   select ... from b
endif
можно. На сколько я знаю, такого сделать в ORACLE нельзя.
Там либо ты посылаешь на сервер SQL - запрос, либо PL/SQL блок.
В PL/SQL блоке конечно тоже можно сделать SELECT, но уже по-другому.


> Так в чем же разница с PL/SQL? Только в том, что Oracle терминологически
> разделил декларативную и процедурную части, а MSSQL решил терминологией
> себя не озабачивать. Количество имеющихся синтаксических конструкций

Не терминологически, а технологически. В оракле оно как-то поотдельности
живет. Я выше попытался объяснить.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229677
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyБыло утверждение, что TransactSQL - язык запросов, значит конструкции этого языка предназначены для написания запросов. Вот пусть автор утверждения и расскажет.

Еще как предназначены. Посмотрите любой скрипт на bid=1.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229679
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyА Вы знакомы с PL/SQL?Мне казалось, что мы здесь не мои знания обсуждаем.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229687
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin Bogdanov AndreyБыло утверждение, что TransactSQL - язык запросов, значит конструкции этого языка предназначены для написания запросов. Вот пусть автор утверждения и расскажет.

Еще как предназначены. Посмотрите любой скрипт на bid=1.А вы сейчас кому отвечаете? Если мне, то я не спрашивал предназначены ли конструкции TransactSQL для написания запросов. А если кому-то другому, то зачем меня цитировать?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229712
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА вы сейчас кому отвечаете? Если мне, то я не спрашивал предназначены ли конструкции TransactSQL для написания запросов.

Простите, следующее не Вы спрашивали?!

Bogdanov AndreyА когда TransactSQL стал языком запросов?

Bogdanov AndreyТо есть в запросах можно использовать любые конструкции этого языка
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229987
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey wrote:
> А Вы знакомы с PL/SQL?
>
> Мне казалось, что мы здесь не мои знания обсуждаем.
Да, не их.
Однако, если Вы не знакомы с PL/Sql, то было бы странно выслушивать Ваше
мнение по поводу похожести и/или непохожести оного на T-Sql.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35229992
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey Было утверждение, что TransactSQL - язык запросов, значит конструкции этого языка предназначены для написания запросов. Вот пусть автор утверждения и расскажет.Если у Вас автомобиль, предназначенных для перевозки 5 человек - это же не значит что на нём нельзя ездить одному

по-моему демагогией занимаетесь
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35230111
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin авторА вы сейчас кому отвечаете? Если мне, то я не спрашивал предназначены ли конструкции TransactSQL для написания запросов.

Простите, следующее не Вы спрашивали?!

Bogdanov AndreyА когда TransactSQL стал языком запросов?

Bogdanov AndreyТо есть в запросах можно использовать любые конструкции этого языка
А слово ЛЮБЫЕ вы решили проигнорировать.

SergSuperпо-моему демагогией занимаетесьСогласен. Но начал это, на мой взгляд, MasterZiv утверждая, что в Oracle два языка, в то время как MSSQL - один. Если не заниматься буквоедством, то и в Oracle и в MSSQL есть два множества синтаксических конструкций - одно для написания запросов (собственно SQL) и второе - процедурное расширение. Естественно, есть некоторые технические различия в реализации. Ну а какое из этих множеств языком называть - это уже вопрос к марктологам.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35230118
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyОднако, если Вы не знакомы с PL/Sql, то было бы странно выслушивать Ваше
мнение по поводу похожести и/или непохожести оного на T-Sql.А почему вы тогда моим знаниме T-sql не поинтересовались?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35230133
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не буду мудрствовать, из доки по ораклу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
if_statement ::= 
IF boolean_expression THEN statement [statement]...
 [ELSIF boolean_expression THEN statement [statement]...] 
   [ELSIF boolean_expression THEN statement [statement]...]...
 [ELSE statement [statement]...] END IF;

CASE { simple_case_expression
     | searched_case_expression
     }
     [ else_clause ]
     END
simple_case_expression::=
expr WHEN comparison_expr
     THEN return_expr
     [ WHEN comparison_expr
       THEN return_expr ]...
searched_case_expression::=
WHEN condition THEN return_expr
[ WHEN condition THEN return_expr ]...

глянул в доке на варианты циклов loop, решил замучаюсь копировать
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35230163
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey wrote:
> А почему вы тогда моим знаниме T-sql не поинтересовались?
Мог бы. Но априори я считаю, что раз Вы знаете что есть разница между т
и скл - значит с т-скл вы знакомы.
Но в т-скл грань между т и скл - крайне тонка, и многие её там не видят
(хотя некоторые "хвосты" таки торчат наружу).
а вот в пл/скл - грань есть, и весьма жОсткая.
и проводить параллели между пл/скл и т-скл в виде "и то и другое -
процедурное расширение, отличается только в деталях".... вот и
поинтересовалсо.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35231171
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinЧто значит "любые конструкции"?! Как прикажете цикл в запросе использовать?
Например, для выполнения задач, для которых в итоге придумали аналитические функции.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35231666
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
> А почему вы тогда моим знаниме T-sql не поинтересовались?
Мог бы. Но априори я считаю, что раз Вы знаете что есть разница между т
и скл - значит с т-скл вы знакомы.Забавно. Все с точностью до наоборот. Oracle я непрерывно занимаюсь уже лет 15, а с MSSQL сталкиваюсь лишь эпизодически.
То что подходы к реализации процедурного расширения у Oracle и MSSQL сильно отличаются хорошо видно, но утверждение о том, что в Oracle на "язык" больше крайне сомнительно, особенно не стоит этим пугать неискушенных посетителей форума.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35231689
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey locky
> А почему вы тогда моим знаниме T-sql не поинтересовались?
Мог бы. Но априори я считаю, что раз Вы знаете что есть разница между т
и скл - значит с т-скл вы знакомы.Забавно. Все с точностью до наоборот. Oracle я непрерывно занимаюсь уже лет 15, а с MSSQL сталкиваюсь лишь эпизодически.
То что подходы к реализации процедурного расширения у Oracle и MSSQL сильно отличаются хорошо видно, но утверждение о том, что в Oracle на "язык" больше крайне сомнительно, особенно не стоит этим пугать неискушенных посетителей форума.

Ну если ты за 15 лет не понял что SQL и PL/SQL в Oracle это совершенно разные подсистемы, то это говорит лишь об уровне этих занятий
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232104
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Ну если ты за 15 лет не понял что SQL и PL/SQL в Oracle это совершенно разные подсистемы, то это говорит лишь об уровне этих занятийНе тебе и не здесь оценивать мои знания. Это мои работодатели делают.
Ну а переход на личности очень хорошо характеризует твои способности к дискусси.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232453
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey Gluk (Kazan)Ну если ты за 15 лет не понял что SQL и PL/SQL в Oracle это совершенно разные подсистемы, то это говорит лишь об уровне этих занятийНе тебе и не здесь оценивать мои знания. Это мои работодатели делают.
Ну а переход на личности очень хорошо характеризует твои способности к дискусси.

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

как ты объяснишь, что в Oracle некоторые конструкции работающие только в SQL, PL/SQL по прошествии некоторого количества версий начинают работать в PL/SQL

терпеливо слушаю твою аргументацию
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232469
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey wrote:
> Забавно. Все с точностью до наоборот. Oracle я непрерывно занимаюсь уже
> лет 15, а с MSSQL сталкиваюсь лишь эпизодически.
> То что подходы к реализации процедурного расширения у Oracle и MSSQL
> сильно отличаются хорошо видно, но утверждение о том, что в Oracle на
> "язык" больше крайне сомнительно, особенно не стоит этим пугать
> неискушенных посетителей форума.
Значит, Вы незнакомы с Т-Скл, что, в принципе, сути особо не меняет.
И в Оракл и правда - "на язык больше", просто Вы этого уже не замечаете
- это для вас "обычное дело".
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232596
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)а сам ты свою кочку зрения чем аргументировал ? Способный ты наш
мне накласть и на твой уровень и на твою квалификацию, но если ты заблуждаешься (а я это вижу), мой долг как честного человека попытаться тебя разубедить :(
Значит переход на личности - ваш способ убеждения? Крайне плодотворно для дискуссий.

Gluk (Kazan)как ты объяснишь, что в Oracle некоторые конструкции работающие только в SQL, PL/SQL по прошествии некоторого количества версий начинают работать в PL/SQL
Для особо неспособных напоминаю, что я нигде не утверждал того, что реализация SQL и SQL в PL/SQL у Oracle суть одно и то же.
Вот реализация SQL в Oracle 9 и Oracle 10 также несколько отличаются. Это уже разные языки? А еще в Тамбове и Москве разговривают немного по-разному - это мы тоже на разных языках говорим? Если каждое различие в диалектах новым языком обзывать - не многовато ли будет? Хотя вопрос конечно философский.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232665
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Bogdanov Andrey

тоже вызывает удивление, что за 15 лет, вы не замечали, что еще в 9i элементарно типы данных много где не совпадали ?
mssql просто удачней маскирует два обсалютно идеологически разных языка, хотя во сновном лишь за счет гораздо скудных возможностей.
а вообще можно создавать аналог Бушизмов из цитат с MSDN, там Browser-PHP-RDBMS - 2-tier, транзакции в фокпро, вот и T-SQL из той же серии, декларативно-процедурный ... там наверника кто-то из вумных в гробу перевернулся
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232719
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyЗначит, Вы незнакомы с Т-Скл, что, в принципе, сути особо не меняет.
C T-sql я действительно весьма плохо знаком.

lockyИ в Оракл и правда - "на язык больше", просто Вы этого уже не замечаете
- это для вас "обычное дело".А почему тогда на "один"? В Oracle можно и больше языков насчитать. Например, с какой стати DML и DDL в один язык объединили? Вполне можно разными считать - в каждом свои сиинтаксические конструкции. Есть еще язык сценариев SQL*Plus - это совсем отдельная песня. А можно и про backup вспомнить - там тоже свои команды. Думаю, что языков с десяток наскребется. И все это против одного T-sql.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232720
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
я чего-то уже не понимаю: что, на PL/SQL нельзя писать запросы?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232773
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!тоже вызывает удивление, что за 15 лет, вы не замечали, что еще в 9i элементарно типы данных много где не совпадали ?
Я где-то утверждал, что совпадали? Типы данных и в 10-ке не совпадают. Любите вы выдумать себе оппонента и спорить с ним.

Yo.!mssql просто удачней маскирует два обсалютно идеологически разных языка, Ну вот вы оказывается со мной не спорите, а соглашаетесь. Я нигде не утверждал, что в Oracle язык один, я просто утверждал, что в количестве языков между MSSQL и Oracle существенных различий нет, а сколько их - уже зависит от определения понятия "язык".

SergSuper я чего-то уже не понимаю: что, на PL/SQL нельзя писать запросы?Вот о том и речь, что любят некоторые маститые свои знания продемонстрировать, а в итоге людей менее знакомых с ситуацией только запутывают. В данном случае формально можно сказать и то, что да, на PL/SQL запросы писать нельзя, просто PL/SQL допускает использование внутри себя другого языка - SQL. Можно сказать и по-другому - в PL/SQL запросы писать можно и для этого используются некоторые конструкции этого языка удивительно похожие на SQL. Ну а можно и по-простецки (к в MSSQL) считать SQL и PL/SQL одним языком. Ответов много, а суть при этом одна.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232775
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergSuperYo.!
я чего-то уже не понимаю: что, на PL/SQL нельзя писать запросы?
нет, также как и на процедурном T-SQL, запросы пишутся на диалекте декларативного языка SQL, который через внешние нашлепки и схожесть типов данных может интегрироватся с процедурной частью, которая ничего общего с SQL не имеет. в случае с Oracle это тупо диалект языка Ада ...
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232778
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyЗначит переход на личности - ваш способ убеждения? Крайне плодотворно для дискуссий.


Не вам и не здесь учить меня плодотворному ведению дискуссий (я тоже умею вставать в 1 позицию )
Если человека макают в г... его это как минимум настораживает
если он не тормоз и не упертый баран, он начинает ДУМАТЬ
и это вполне эффективно приводит к обогащению его жизненного опыта

а мои перверсии и контрапупсии - дело третье
В конце концов, что для ВАС важнее: МОЙ моральный облик или ВАШ жизненный опыт ???

Впрочем, решать ВАМ
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232805
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Yo.!!
Ты пишешь:

Yo.!в случае с Oracle это тупо диалект языка Ада ...Йо, я ж уже тыткал тебя носом в эту Аду...

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232865
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!нет, также как и на процедурном T-SQL, запросы пишутся на диалекте декларативного языка SQL, который через внешние нашлепки и схожесть типов данных может интегрироватся с процедурной частью, которая ничего общего с SQL не имеет. в случае с Oracle это тупо диалект языка Ада ...А вот конструкция SELECT ... INTO... - из какого языка? В SQL Reference при описании команды SELECT про INTO ничего не сказано. А вот в PL/SQL Reference эта конструкция описана. Следует ли из этого, что в PL/SQL есть операторы для манипулирования данными?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232899
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)В конце концов, что для ВАС важнее: МОЙ моральный облик или ВАШ жизненный опыт ???Бесспорно, я бесконечно благодарен вам за заботу о моем жизненном опыте. :)

Gluk (Kazan)Не вам и не здесь учить меня плодотворному ведению дискуссий (я тоже умею вставать в 1 позицию )
В ответ на это могу процитировать одного, возможно уважаемого вами :), человека:
Если человека макают в г... его это как минимум настораживает
если он не тормоз и не упертый баран, он начинает ДУМАТЬ
и это вполне эффективно приводит к обогащению его жизненного опыта

Кстати, прошу прощения, что незаметно на "Вы" перешел. Надеюсь это не слишком оскорбительно.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232956
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий
Йо, я ж уже тыткал тебя носом в эту Аду...

угу, помню. весь форум ржал с твоих фантазий

Bogdanov Andrey А вот конструкция SELECT ... INTO... - из какого языка? В SQL Reference при описании команды SELECT про INTO ничего не сказано.
все правильно, в PL/SQL сказано, что о селекте смотреть SQL команду, вот это и есть пришлепка сверху которая пытается интегрировать диаметральные языки, если в тип переменной DIANA влезает тип поля из SQL, то конструкция даже бывает работает
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35232999
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Yo.!!
Ты пишешь:

Yo.! МимопроходящийЙо, я ж уже тыткал тебя носом в эту Аду...
Y> угу, помню. весь форум ржал с твоих фантазий уж не позорился бы Йоу...

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233022
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! Bogdanov Andrey А вот конструкция SELECT ... INTO... - из какого языка? В SQL Reference при описании команды SELECT про INTO ничего не сказано.
все правильно, в PL/SQL сказано, что о селекте смотреть SQL команду, вот это и есть пришлепка сверху которая пытается интегрировать диаметральные языки, если в тип переменной DIANA влезает тип поля из SQL, то конструкция даже бывает работает Это не ответ на вопрос. Я пока вижу только то, что при описании синтаксиса оператора "SELECT INTO" делают ссылку на синтаксис оператора "SELECT" из другого языка. Это из экономии места весьма удобно. Все-таки если формально, в языке PL/SQL есть оператор для получния данных из таблиц или нет?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233102
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey Gluk (Kazan)В конце концов, что для ВАС важнее: МОЙ моральный облик или ВАШ жизненный опыт ???Бесспорно, я бесконечно благодарен вам за заботу о моем жизненном опыте. :)

Gluk (Kazan)Не вам и не здесь учить меня плодотворному ведению дискуссий (я тоже умею вставать в 1 позицию )
В ответ на это могу процитировать одного, возможно уважаемого вами :), человека:
Если человека макают в г... его это как минимум настораживает
если он не тормоз и не упертый баран, он начинает ДУМАТЬ
и это вполне эффективно приводит к обогащению его жизненного опыта

Кстати, прошу прощения, что незаметно на "Вы" перешел. Надеюсь это не слишком оскорбительно.

Не понял, что ВЫ хотели сказать ентим постом Уважаемый
Мнизойдите к скудоумию Вас окружающих, разжуйте ПЛИЗЗЗЗ
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233153
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bogdanov AndreyЭто не ответ на вопрос. Я пока вижу только то, что при описании синтаксиса оператора "SELECT INTO" делают ссылку на синтаксис оператора "SELECT" из другого языка. Это из экономии места весьма удобно. Все-таки если формально, в языке PL/SQL есть оператор для получния данных из таблиц или нет?
ну в этой редакции доки посчитали, что для девелопера будет удобней конструкцию которая является мостиком между двумя изолироваными мирами запихнуть в этот раздел, что с того ? это завется syntax sugar, от этого SQL не станет процедурней (гусары молчать, "особенную" субд не вспорминать ).
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233381
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Gluk (Kazan)]Не понял, что ВЫ хотели сказать ентим постом Уважаемый
Мнизойдите к скудоумию Вас окружающих, разжуйте ПЛИЗЗЗЗ[/quotЭто про "прошу прощения"?

Я попытался извиниться за необоснованное изменение личного обращения. Наша дискуссия началась на "ты". Некоторые участники форума, считают переход на "вы" оскорбительным - я не знаю точно отношения к данному вопросу каждого из участников (сам я достаточно безразличен к этому), но считаю, что извинение не помешает.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233445
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!ну в этой редакции доки посчитали, что для девелопера будет удобней конструкцию которая является мостиком между двумя изолироваными мирами запихнуть в этот раздел, что с того ? это завется syntax sugar, от этого SQL не станет процедурней (гусары молчать, "особенную" субд не вспорминать ).И опять нет прямого ответа на вопрос :)
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233527
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyЯ попытался извиниться за необоснованное изменение личного обращения. Наша дискуссия началась на "ты". Некоторые участники форума, считают переход на "вы" оскорбительным - я не знаю точно отношения к данному вопросу каждого из участников (сам я достаточно безразличен к этому), но считаю, что извинение не помешает.

В свою очередь прошу прощения.
Я немножко излишне взвинчен сегодня (в связи с событиями не связанными с общением на форуме)
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233555
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey wrote:
> Например, с какой стати DML и DDL в один язык объединили? Вполне можно
> разными считать - в каждом свои сиинтаксические конструкции. Есть еще
Хм... а что, я могу перемежать, скажем, DML и DDL в pl/sql?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233570
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyХм... а что, я могу перемежать, скажем, DML и DDL в pl/sql?
В PL/SQL Вы можете, скажем, перемежать DML и операторы управления транзакциями. Не можете перемежать DML и DDL. Внимание, вопрос: сколько же в результате мы получаем языков, почему именно столько и какое отношение к этому имеет возможность перемежать?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233626
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer wrote:
> В PL/SQL Вы можете, скажем, перемежать DML и операторы управления
> транзакциями. Не можете перемежать DML и DDL. Внимание, вопрос: сколько
> же в результате мы получаем языков, почему именно столько и какое
> отношение к этому имеет возможность перемежать?
а в т-скл можно перемежать... правда, не все ДДЛ допустимы, ессно....

в любом случае, в пл/скл граница куда более четкая, нежели в т-скл.
насколько это хорощо - вопрос десятый.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233686
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyв любом случае, в пл/скл граница куда более четкая, нежели в т-скл.
На практике - безусловно, куда более четкая. Правда, по моим, возможно неверным, представлениям это вызвано исключительно одной деталью - неявным возвратом рекордсетов, наличествующим в T-SQL. Согласитесь, например, что между

Код: plaintext
1.
2.
3.
-- sql
insert into "table" values ( 1 );
insert into "table" values ( 2 );
insert into "table" values ( 3 );

и

Код: plaintext
1.
2.
3.
4.
5.
-- pl/sql
begin
  insert into "table" values ( 1 );
  insert into "table" values ( 2 );
  insert into "table" values ( 3 );
end;

разницы, особенно внешней, не так много (и к сожалению не каждый ораклоид расскажет, в чем эта разница состоит). И по аналогичным причинам не особо видна разница между

Код: plaintext
1.
-- sql
select a, b, c from [table] where id = case when @a > @b then @a else @b end

и

Код: plaintext
1.
2.
3.
-- t-sql
if @a > @b
  then select a, b, c from [table] where id = @a
  else select a, b, c from [table] where id = @b

(прошу прощения за возможные ошибки, мысль, я думаю, понятна.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233694
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
а в т-скл можно перемежать... правда, не все ДДЛ допустимы, ессно....

перемежать и в оракле не проблема, проблема делать это в транзакции. в MSSQL точно также ничерта нельзя пережать на IL snapshot. для версионника это делать в транзакции криво идиологически ....
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233773
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer wrote:
> разницы, особенно внешней, не так много (и к сожалению не каждый
> ораклоид расскажет, в чем эта разница состоит). И по аналогичным
> причинам не особо видна разница между
Я, кстати, тоже не знаю - было интересно узнать, для "общего образования".

больше всего лично мне не нравится путаница в типах данных между скл и
пл/скл. обычно это вроде как не сильно важно, но иногда встреваем :(
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233834
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
softwarer wrote:
> разницы, особенно внешней, не так много (и к сожалению не каждый
> ораклоид расскажет, в чем эта разница состоит). И по аналогичным
> причинам не особо видна разница между
Я, кстати, тоже не знаю - было интересно узнать, для "общего образования".

Ну например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQL> create table a(a number( 1 ));
Table created.
SQL> insert into a values( 1 );
 1  row created.
SQL> insert into a values( 10 );
insert into a values( 10 )
                     *
ERROR at line  1 :
ORA- 01438 : value larger than specified precision allows for this column

SQL> commit;
Commit complete.
SQL> select * from a;
         A
----------
          1 

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SQL> create table a(a number( 1 ));
Table created.
SQL> begin
   2    insert into a values( 1 );
   3    insert into a values( 10 );
   4   end;
   5   /
begin
*
ERROR at line  1 :
ORA- 01438 : value larger than specified precision allows for this column
ORA- 06512 : at line  3 

SQL> commit;
Commit complete.
SQL> select * from a;
no rows selected
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233884
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyЯ, кстати, тоже не знаю - было интересно узнать, для "общего образования".
Главным различием я бы назвал следующее:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SQL> create table inserted (i integer check (i <>  3 ));

Table created.

SQL> begin
   2     insert into inserted values ( 1 );
   3     insert into inserted values ( 2 );
   4     insert into inserted values ( 3 );
   5     insert into inserted values ( 4 );
   6   end;
   7   /

ERROR at line  1 :
ORA- 02290 : check constraint (TEST.SYS_C0010272) violated 
ORA- 06512 : at line  4  

SQL> select count(*) from inserted;

  COUNT(*)                                                                      
----------                                                                      
          0 

На собеседовании кроме того был бы рад услышать соображения на тему разницы в скорости выполнения между этими случаями. Не буду клясться, что это вся разница, но кроме этого существенных соображений в голову не приходит.

lockyбольше всего лично мне не нравится путаница в типах данных между скл и пл/скл. обычно это вроде как не сильно важно, но иногда встреваем :(
Лично меня раздражает отсутствие boolean в SQL. А вообще... сейчас это малоактуально, а в восьмерке очень мешало - делаешь запрос, отлаживаешь, все отлично, вставляешь в PL/SQL - а он, сволочь, не компилируется. Типа "эта фича SQL в PL/SQL не поддерживается".
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233912
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer
Лично меня раздражает отсутствие boolean в SQL. А вообще... сейчас это малоактуально, а в восьмерке очень мешало - делаешь запрос, отлаживаешь, все отлично, вставляешь в PL/SQL - а он, сволочь, не компилируется. Типа "эта фича SQL в PL/SQL не поддерживается".

сотню раз разжевывалось: прсото PL/SQL машина в момент компиляции проверяет синтаксис SQL, никакого отношения к PL/SQL они не имеют ...
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35233998
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer wrote:
> Главным различием я бы назвал следующее:
да, про это я как-то забыл - незакетченный эксепшн на блоке....

а булеан... ну, обойтись можно, хотя и странно получается: булевские
операции и условия - есть, а самого булеана - нету.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234020
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyа булеан... ну, обойтись можно
Можно, но глупо. Получается буквально следующее: я пишу функцию с результатом boolean, какую-нибудь проверку. В один прекрасный день мне хочется использовать ее в запросе, и наступает бред. Какое решение ни принимай - все, мягко говоря, не лучшее.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234171
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky> Главным различием я бы назвал следующее:
да, про это я как-то забыл - незакетченный эксепшн на блоке....Но стоит отметить, что данное поведение не является отличием SQL и PL/SQL. Это просто общий для Oracle принцип "атомарности".
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234194
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey wrote:
> Но стоит отметить, что данное поведение не является отличием SQL и
> PL/SQL. Это просто общий для Oracle принцип "атомарности".
проведя опыты - мне не показалось, что это "общий принцип атомарности".
без анонимного блока - одна строка, с анонимным блоком - ни одной.
кроме того, поставив ексепт можно привести второй случай к первому
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234206
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> версионника это делать в транзакции криво идиологически ....
но ведь делают, собственно.
пусть даже и говорят "это не в транзакции".
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234217
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyпроведя опыты - мне не показалось, что это "общий принцип атомарности"
Тем не менее, это так и есть. Чтобы увидеть это, сравните, например, в моем примере (с i < 3)

Код: plaintext
1.
2.
3.
insert into inserted values ( 1 );
insert into inserted values ( 2 );
insert into inserted values ( 3 );
insert into inserted values ( 4 );

и

Код: plaintext
insert into inserted select rownum from dual connect by level <  5 
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234248
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer wrote:
> Тем не менее, это так и есть. Чтобы увидеть это, сравните, например, в
> моем примере (с i < 3)
странный принцип, если честно.
наверное, дело вкуса.
набор стейтментов трактуется либо как набор (в первом случае), либо как
единый стейтмент (в случае с блоком). хотя - на то блок и есть блок.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234282
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyнабор стейтментов трактуется либо как набор (в первом случае),
Тут следует еще учесть, что в Oracle нет понятия "скрипт" или аналогичного (как в MS, если не ошибаюсь, batch). Набор стейтментов в первом случае - это server call с клиента для каждого insert-а поочередно.

lockyхотя - на то блок и есть блок.
Можно провести аналогию со вложенными транзакциями.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234320
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyстранный принцип, если честно.
наверное, дело вкуса.А на мой взгляд, нарушение этого принципа крайне станно. Можно, конечно, считать это делом вкуса. Вообще-то, математически подобные программные системы описываются теорией автоматов. И если операция недопустима (типа исключение произошло), то автомат не меняет свое состояние.

lockyнабор стейтментов трактуется либо как набор (в первом случае), либо как
единый стейтмент (в случае с блоком). хотя - на то блок и есть блок.В том-то и дело, что в случае с блоком это нет набора "стейтментов", есть одно обращение к базе данных. На которое она естественным образом реагирует.
Собственно именно в этом месте, на мой взгляд, и есть основное идеологическое различие между PL/SQL И T-sql. Если первый с самого начала рос как процедурный язык интегрированный с SQL, то второй начинался скорее как скриптовый язык для работы с SQL-сервером. Это, естественно, мое субъективное восприятие, в упрощенном изложении :). Но оно живет у меня года с 95-го и никак не проходит. :)
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234349
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyА на мой взгляд, нарушение этого принципа крайне странно.
А я вполне понимаю обе точки зрения :)

Сугубо формально можно сказать, что "когда сервер за меня что-то откатывает - это не есть хорошо, может я собирался исправить проблему и продолжить с места остановки". Однако на практике это удачное соглашение; я не припомню, чтобы оно мне мешало, зато в ряде случаев оно делает хороший код проще, а тупой код - надежнее.

Bogdanov AndreyИ если операция недопустима (типа исключение произошло), то автомат не меняет свое состояние.
Как мы с Вами знаем, в ряде аспектов состояние все-таки меняет. Поэтому выбор оказывается "в чем меняется, а в чем нет" - и это уже не вопрос формальной теории, вопрос практики.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234413
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerСугубо формально можно сказать, что "когда сервер за меня что-то откатывает - это не есть хорошо, может я собирался исправить проблему и продолжить с места остановки".Эта позиция, на мой взгляд, крайне непродуктивна. По-моему, целостную парадигму на ее основе не построить. Ведь на самом деле даже при отдельно стоящем Insert его падению уже предшествовали какие-то действия (может быть там триггера были и т.п.), что-то в состоянии СУБД изменилось. К моменту получения exception успело выполниться несколько десятков (а может и сотен) команд процессора. Их мы тоже будем "продолжать с места остановки"? Все-таки все языки придерживаются принципа атомарности уровня оператора. Oracle просто попытался эту парадигму реализовать более глобально. Ну а насколько удачно - вопрос отдельный.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234565
StX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
StX
Гость
Yo.! locky
а в т-скл можно перемежать... правда, не все ДДЛ допустимы, ессно....

перемежать и в оракле не проблема, проблема делать это в транзакции. в MSSQL точно также ничерта нельзя пережать на IL snapshot. для версионника это делать в транзакции криво идиологически ....
Простите за оффтоп и позднее зажигание: почему вы считаете что для версионника криво иметь DDL в транзакции?
Контрпример - PostgreSQL, чистый версионник. За очень малым исключением (создание/удаление базы, tablespace и сборки мусора) DDL в транзакции допустим и работает абсолютно корректно.
Почему орден св.Оракла это запрещает?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234798
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyЭта позиция, на мой взгляд, крайне непродуктивна.
Согласен. Я просто "истины ради" указал на возможность раскритиковать этот подход со стороны некоего также истинного утверждения (давайте не углубляться в детали атомарности... мне кажется, ситуация понятна - например, если я делал большой-большой апдейт, и он слетел на миллионной записи, я хочу повторить его с where id >= 1000000.

Как я уже указал выше, мне нравится этот оракловый подход по сугубо статистическим причинам (нередко удобно, никогда не мешает).
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35234875
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StXКонтрпример - PostgreSQL, чистый версионник. За очень малым исключением (создание/удаление базы, tablespace и сборки мусора) DDL в транзакции допустим и работает абсолютно корректно. Почему орден св.Оракла это запрещает?
Коллега Yo отчасти горячится, но в его словах есть доля истины. Давайте я выдам одно очевидное соображение, а вы уж решайте, что есть чистый версионник и корректная работа.

Утверждение: корректный внутритранзакционный DDL возможен только при serializable изоляции в жестком смысле этого слова (в том самом, в котором в Oracle вообще нет serializable) Обосновать это очень просто: представьте себе, что я делаю в транзакции некоторое изменение структуры таблицы, несовместимое со старой. Скажем, alter table drop column или alter table add foreign key. Далее в той же транзакции я делаю запрос к модифицированной таблице и как-то использую полученные данные. Проблема в том, что при любом уровне ниже serializable я при этом должен получить записи, параллельно вставленные другими транзакциями в старую версию структуры. Это выливается в проблемы либо на физическом уровне - то самое нет колонки, несовпадение форматов - либо, что куда страшнее, на логическом (новая логика захавала неконвертированные старые данные, нарушена целостность).

Теперь давайте подумаем, что есть serializable в этом случае. На самом деле это ни что иное как эксклюзивная блокировка таблицы или иного крупного объекта (да еще и возможно с растущими из него). То есть решить эту задачу мы можем только блокировкой в худшем неверсионном стиле.

Прошу прощения, я не спал ночь, может завтра подумаю получше и решу, что неправ
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235125
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer wrote:
> Теперь давайте подумаем, что есть serializable в этом случае. На самом
> деле это ни что иное как эксклюзивная блокировка таблицы или иного
> крупного объекта (да еще и возможно с растущими из него). То есть решить
> эту задачу мы можем только блокировкой в худшем неверсионном стиле.
Учитывая, что так или иначе подобного рода блокировка всё равно
накладывается на время изменения метаданных, то единственным
отрицательным побочным эффектом может являтся "кривизна рук"
разработчика, который будет слишком долго держать транзакцию.
Но это, как известно, решабельно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235263
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerпредставьте себе, что я делаю в транзакции некоторое изменение структуры таблицы, несовместимое со старой. Скажем, alter table drop column или alter table add foreign key. Далее в той же транзакции я делаю запрос к модифицированной таблице и как-то использую полученные данные. Проблема в том, что при любом уровне ниже serializable я при этом должен получить записи, параллельно вставленные другими транзакциями в старую версию структуры. Почему это ?
Или имеются в виду записи в старом формате, вставленные до DDL ?
В IB\FB, кстати, с этим проблем нет - они поддерживают версионность метаданных.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235286
StX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
StX
Гость
softwarer
Мысль вроде понял. Неважно блокировочник это или версионник - DDL требует эксклюзивную блокировку объекта. По-крайней мере пока наука-чудесница ничего нового пока не предлагает...

Но всё-таки, почему идеология "первого версионника" требует DDL сразу коммитить? Ведь обновления обычно накатывают не на живую систему; что с того что блокировка будет висеть?

Неужели оставили ddl-in-tran на версию 12p? Теперь можно откатить весь патч целиком!
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235363
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
Учитывая, что так или иначе подобного рода блокировка всё равно
накладывается на время изменения метаданных, то единственным
отрицательным побочным эффектом может являтся "кривизна рук"
разработчика, который будет слишком долго держать транзакцию.
Но это, как известно, решабельно.
Posted via ActualForum NNTP Server 1.4

Шо, опять ?
а статистика ? кроме блокировки на всю таблицу, при изменении структуры сбразывается вся статистика , таким образом DDL просто убивает оптимизатор, далее mssql и остальные реализовавшие эту идеологически кривую хрень не смогут сделать нормальное отслеживание зависимостей.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235402
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StX
Но всё-таки, почему идеология "первого версионника" требует DDL сразу коммитить? Ведь обновления обычно накатывают не на живую систему; что с того что блокировка будет висеть?

Неужели оставили ddl-in-tran на версию 12p? Теперь можно откатить весь патч целиком!
в оракле есть десятки вариантов как быстро откатить все изменения DDL, в случае нуадачи одного из DDL. при этом если все прошло ОК, быть увереным, что процедуры не поломались. в MSSQL же в этом плане все совсем грустно, да можно быстро откатить если DDL вылетел с ошибкой, но если DDL сменила структуру таблицы на которую юзает некая сторед процедура которая из-за смены структуры поломалась то DBA об этом узнает только когда юзера начнут его подвешивать за яйца, и никаких инструментов гарантировано отловить поломаные процедуры нет и пока не предвидится ...
вот тут долго пережевывали:
/topic/488306&pg=8#4871292
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235426
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> Шо, опять ?
> а статистика ? кроме блокировки на всю таблицу, при изменении структуры
> сбразывается вся статистика , таким образом DDL просто убивает
> оптимизатор, далее mssql и остальные реализовавшие эту идеологически
> кривую хрень не смогут сделать нормальное отслеживание зависимостей.
"Идеологически неправильное" - это не к нам, это в ЦК.
А то, что "при изменении структуры сбрасывается вся статистика" - так
это, извините, кривизна реализации конкретной СУБД, а не "идеологически
оправданное действие".
Не вижу причины, по которой добавление нового столбца в таблицу должно
приводить к сбросу статистики по уже имеющимся данным (впрочем, что
конкретно в оракле подразумевают под "статистикой" - я имею достаточно
смутное понятие)
Также к сбросу статистики не может привести, например, изменение
процедуры (ДДЛ как никак)
И прочая, прочая....
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235431
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> кривую хрень не смогут сделать нормальное отслеживание зависимостей.
в 2008 вроде как обещались
Тольком пока не смотрел, у меня свои методы отслеживания зависимостей,
помедленнее, но понавороченней.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235449
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyто единственным отрицательным побочным эффектом может являтся
Я не вижу смысла обсуждать детали - хоть и не совсем согласен - поскольку они не влияют на основной тезис: это получается уже не версионник, а "версионник, работающий в режиме блокировочника".

hvladПочему это ? Или имеются в виду записи в старом формате, вставленные до DDL ?
В IB\FB, кстати, с этим проблем нет - они поддерживают версионность метаданных.
Мне кажется, Вы поторопились и не прочитали написанное мной. Я подразумеваю наличие версионности метаданных - поскольку, как Вы можете увидеть, говорю о старой-новой версиях структуры и их сочетании. В этом как раз и есть проблема с моей точки зрения.

С записями, вставленными и закоммиченными до DDL, проблем как раз нет - поскольку DDL увидит их и обработает (проверит ограничения, переведет в новый формат итп). Точнее, создаст их версии в новом формате. Проблема в следующем:

- в момент времени t1 транзакция T1 выполняет alter table. Старую версию метаданных обозначим S0; появляется версия S1

- в момент времени t2 транзакция T2 выполняет insert в таблицу. S1 еще не закоммичена, поэтому T2 видит структуру S0 и вставляет данные в соответствии с ней. Назовем эту строку R2 формата S0.

- в момент времени t3 транзакция T2 делает commit

- в момент времени t4 транзакция T1 делает select * from table

В этот момент времени, если мы работаем в read committed, select должен увидеть R2. Проблема в том, что она находится в формате S0, который может оказаться принципиально несовместим с форматом S1. Принципиально - например, в S1 присутствует constraint, который для R2 не выполняется.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235472
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
Yo.! wrote:
> кривую хрень не смогут сделать нормальное отслеживание зависимостей.
в 2008 вроде как обещались
Тольком пока не смотрел, у меня свои методы отслеживания зависимостей,
помедленнее, но понавороченней.
Posted via ActualForum NNTP Server 1.4

ага, я неделю клянчил показать скрипт, а вы с parklin меня неделю кормили бла-бла, путаясь в обилии бесплезных сп, так и не смогли показать ни скрипт, ни даже описать методологию как вы что-то там отслеживаете... с того времени что-то изменилось ?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235515
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StXНо всё-таки, почему идеология "первого версионника" требует DDL сразу коммитить? Ведь обновления обычно накатывают не на живую систему; что с того что блокировка будет висеть?
Если накатывать обновления на мертвую систему, между вариантами "коммитить" и "не коммитить" разницы ровным счетом никакой. Только в одном случае при желании откатить делаем rollback, а в другом - flashback. Однако, идеологи Oracle уделяют прорву внимания системам 24x7x365, для которых надо именно что накатывать на живую базу.

StXНеужели оставили ddl-in-tran на версию 12p?
Не думаю. Нафига делать ненужный ddl in transaction? Лучше уж довести до ума create schema.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235539
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> ага, я неделю клянчил показать скрипт, а вы с parklin меня неделю
> кормили бла-бла, путаясь в обилии бесплезных сп, так и не смогли
> показать ни скрипт, ни даже описать методологию как вы что-то там
> отслеживаете... с того времени что-то изменилось ?
Насчет скрипта - не помню, если честно...
Что поменялось в 2008?
Там ушли от идеи хранить зависимости в виде соответствий идентификаторов
объетов (которых может на этот момент и не быть) и таки (наконец-то!)
пришли к идее хранения зависимостей в виде соответствий литералов
(которые то всегда есть).
А как лично я отслеживаю? Ну, имея под рукой парсер - это всё
элементарно :) (хотя и не так быстро, как мне бы хотелось).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235559
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
- в момент времени t1 транзакция T1 выполняет alter table. Старую версию метаданных обозначим S0; появляется версия S1

- в момент времени t2 транзакция T2 выполняет insert в таблицу. S1 еще не закоммичена, поэтому T2 видит структуру S0 и вставляет данные в соответствии с ней. Назовем эту строку R2 формата S0.

- в момент времени t3 транзакция T2 делает commit

- в момент времени t4 транзакция T1 делает select * from table
а что будет при такой последовательности действий?

- в момент времени t1 транзакция T1 выполняет update t set n=0 where n=1 . Старую версию метаданных обозначим S0; появляется версия S1

- в момент времени t2 транзакция T2 выполняет update t set n=2 where n=1

- в момент времени t3 транзакция T2 делает commit


Я к тому не вижу принципиальной разницы
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235620
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
А как лично я отслеживаю? Ну, имея под рукой парсер - это всё
элементарно :) (хотя и не так быстро, как мне бы хотелось).
Posted via ActualForum NNTP Server 1.4

вот тут я зададал прямой вопрос
/topic/488306&pg=11#4884287
Yo.!
будете, еще как в 2 часа ночи будете когда выяснится, что патч зацепил пару хп, а вы прозевали.
короче Локи, это бесполезный разговор, хотите что-то доказать - скрипт в студию. как вы, конкретно вы отслеживаете результат выполнения батча с патчем и принимаете решение жать commit или rollback

скрипта вы предоставить не смогли, за эти пол года у вас что-то принципиально изменилось ?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235637
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer hvladПочему это ? Или имеются в виду записи в старом формате, вставленные до DDL ?
В IB\FB, кстати, с этим проблем нет - они поддерживают версионность метаданных.
Мне кажется, Вы поторопились и не прочитали написанное мной. Я подразумеваю наличие версионности метаданных - поскольку, как Вы можете увидеть, говорю о старой-новой версиях структуры и их сочетании. В этом как раз и есть проблема с моей точки зрения.

С записями, вставленными и закоммиченными до DDL, проблем как раз нет - поскольку DDL увидит их и обработает (проверит ограничения, переведет в новый формат итп). Точнее, создаст их версии в новом формате. Проблема в следующем:

- в момент времени t1 транзакция T1 выполняет alter table. Старую версию метаданных обозначим S0; появляется версия S1

- в момент времени t2 транзакция T2 выполняет insert в таблицу. S1 еще не закоммичена, поэтому T2 видит структуру S0 и вставляет данные в соответствии с ней. Назовем эту строку R2 формата S0.

- в момент времени t3 транзакция T2 делает commit

- в момент времени t4 транзакция T1 делает select * from table

В этот момент времени, если мы работаем в read committed, select должен увидеть R2. Проблема в том, что она находится в формате S0, который может оказаться принципиально несовместим с форматом S1. Принципиально - например, в S1 присутствует constraint, который для R2 не выполняется.Ах, read committed... Да, там было про "любом уровне ниже serializable", пропустил, признаю.
Хотя snapshot в IB\FB и есть "уровень ниже serializable" - я с этой точки зрения и рассматривал.

Версионность метаданных в IB\FB не заставляет создавать версии всех записей старого формата в новом формате. Старые записи остаются на диске в старом формате, преобразование в новый формат происходит на лету, при их чтении. При такой схеме возможно нарушение старыми данными новых ограничений, и это нужно учитывать. Зато не нужно модифицировать записи физически.

Гм, кажется это несколько мимо темы топика :)
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235654
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! locky
А как лично я отслеживаю? Ну, имея под рукой парсер - это всё
элементарно :) (хотя и не так быстро, как мне бы хотелось).
Posted via ActualForum NNTP Server 1.4

вот тут я зададал прямой вопрос
/topic/488306&pg=11#4884287
Yo.!
будете, еще как в 2 часа ночи будете когда выяснится, что патч зацепил пару хп, а вы прозевали.
короче Локи, это бесполезный разговор, хотите что-то доказать - скрипт в студию. как вы, конкретно вы отслеживаете результат выполнения батча с патчем и принимаете решение жать commit или rollback

скрипта вы предоставить не смогли, за эти пол года у вас что-то принципиально изменилось ?

Интересно, а вот это что по-Вашему:

Microsoft задавит Oracle


Все закончилось тем, что у Вас под рукой не нашлось пропатченного сервера...
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235710
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin
Интересно, а вот это что по-Вашему:

Microsoft задавит Oracle


Все закончилось тем, что у Вас под рукой не нашлось пропатченного сервера...
я в виндозное хоз-во стараюсь не лазить, потому так и не разжился пропатченым. попробую Express все же поставить и проверить. просто я потерял интерес поняв из дискусии, что эта сп появилась уже после выхода mssql2005 и никто из МСных DBA (в отличии от оракловых) не пытается проверять бд на предмет покареженных сп.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235758
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladВерсионность метаданных в IB\FB не заставляет создавать версии всех записей старого формата в новом формате. Старые записи остаются на диске в старом формате, преобразование в новый формат происходит на лету, при их чтении. При такой схеме возможно нарушение старыми данными новых ограничений, и это нужно учитывать.
Боюсь, я не совсем понял. Момент физического преобразования с моей точки зрения малосущественен - пока это делается прозрачно для остальных модулей, это сугубо техническая деталь, не влияющая на концепцию. А вот насчет нарушения..... Следует ли понимать так, когда я в IB делаю add constraint, это ограничение не проверяет старые данные?

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

Код: plaintext
1.
alter table add foreign key (x_id) references x (x_id);
if exists (select distinct x_id from t minus select x_id from x) then rollback;

Что же мы получаем в таком случае? Да ровно то же самое, ровно ту же самую коллизию. Давайте представим себе, что наш скрипт имеет вид:

Код: plaintext
1.
2.
3.
4.
5.
alter table add foreign key (x_id) references x (x_id);
if exists (select distinct x_id from table minus select x_id from x) then rollback; exit;
...
select * from table
...

И в случае, если кто-то впихнул свою запись в промежутке между проверкой (exists) и дальнейшими манипуляциями (select) наша любимая целостность накрывается белой простыней и тихо ползет к ближайшему кладбищу. В RC - потому что кривые данные попали в обработку, в более высоких уровнях ниже serializable, если они есть - потому что хоть и не попали в селект, но попали в таблицу, хотя нарушают целостность.

Итого я пока не вижу возможности корректно обеспечить версионность при DDL.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235823
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> будете, еще как в 2 часа ночи будете когда выяснится, что патч зацепил
> пару хп, а вы прозевали.
> короче Локи, это бесполезный разговор, хотите что-то доказать - скрипт в
> студию. как вы, конкретно вы отслеживаете результат выполнения батча с
> патчем и принимаете решение жать commit или rollback
да, вспомнил.
Отвечу уклончиво: по результату исполнения скрипта с патчем можно
определить часть проблем (как-то - неналичие процедур, которые мы
пытаемся вызывать). остальные проблемы в части неналичия объектов
определить проблематично.
Т.е. нет запроса вроде "выбрать все невалидные объекты".
но тут уже - "шило против мыла": иметь возможность откатить заведомо
неправильный патч не имея возможно определить "скрытые" ошибки - или
иметь возможность определить "скрытые ошибки" но не иметь возможности
откатить патч.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235870
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:
> Интересно, а вот это что по-Вашему:
Это не совсем то, наверное, что имел в виду Йо.
Если мы изменим структуру таблицы - то да, буде ошибка (хотя - надо еще
определить, какие процедуры проверять).
А вот если мы дропнем таблицу... то всё не так однозначно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235876
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
но тут уже - "шило против мыла": иметь возможность откатить заведомо
неправильный патч не имея возможно определить "скрытые" ошибки - или
иметь возможность определить "скрытые ошибки" но не иметь возможности
откатить патч.
Posted via ActualForum NNTP Server 1.4

в том то и фича что в оракле проблемы шила и мыла, если перед накатом всех выгнали - то откатывается вообще тривиально, но если нельзя совсем всех выгнать. то тут сложнее, но опять же фичи оракла наверника позволят и сложнее сценарий - сходу идея выводить кусками бд и патчить куски (если что возращать назад таблеспейс к примеру).
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235887
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyЭто не совсем то, наверное, что имел в виду Йо.
Если мы изменим структуру таблицы - то да, буде ошибка (хотя - надо еще
определить, какие процедуры проверять).
А вот если мы дропнем таблицу... то всё не так однозначно.

Определить какие, поможет sys.sql_dependencies. С учетом специфики MS SQL в плане Deferred Name Resolution (обсуждалось) хп, которая ссылается на несуществующую таблицу, является "валидной".
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235901
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> в том то и фича что в оракле проблемы шила и мыла, если перед накатом
> всех выгнали - то откатывается вообще тривиально, но если нельзя совсем
> всех выгнать. то тут сложнее, но опять же фичи оракла наверника позволят
> и сложнее сценарий - сходу идея выводить кусками бд и патчить куски
> (если что возращать назад таблеспейс к примеру).
:)) Очень приятно, наверное, выгнать всех к чертям, когда накатываешь
патч на маааахонькую часть базы - зато сразу видно, "кто тут хозяин".
Но это - лирика.
Фичи сиквела, кстати, тоже позволяют "посложнее сценарий" - но нас
интересуют сценарии попроще.
В сиквеле есть возможность откатить патч, но нет простой возможности его
проверить.
В оракле - есть простая (ну, относительно) возможность проверить патч,
но нет простой возможности его проверить.
Не вижу смысла спорить - какой из недостатков является не недостатком, а
"выдающимся преимуществом единственно правильной СУБД".
И то, и другое - недостатки, по другом не скажешь.

зы в МС СКЛ, кстати, при желании - разрабы исправят недостаток куда
быстрее и проще. Надо им на это намекнуть.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235909
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:
> Определить какие, поможет sys.sql_dependencies. С учетом специфики MS
> SQL в плане *Deferred Name Resolution* (обсуждалось) хп, которая
> ссылается на несуществующую таблицу, является "валидной".
Об чем и речь.
Второй проблемой может быть несовпадение к-ва параметров в сигнатуре
процедуры и при её вызовах - это видно только при ран-тайме.
Это же самое относится к декларации курсора и несовпадении списка
переменных при fetch.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235941
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyОб чем и речь.
Второй проблемой может быть несовпадение к-ва параметров в сигнатуре
процедуры и при её вызовах - это видно только при ран-тайме.
Это же самое относится к декларации курсора и несовпадении списка
переменных при fetch.

Я могу еще проблем накидать. ;) В таком случие нада "замахиваться" на саму концепцию компиляции хп только при первом запуске.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235956
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:
> Я могу еще проблем накидать. ;) В таком случие нада "замахиваться" на
> саму концепцию компиляции хп только при первом запуске.
Кстати, было бы недурственно, потому как я о таких проблемах вспоминаю
"по факту" - а надо бы полный список составить.
А не надо "замахиваться".
Надо ключик...
Что сейчас делает линкер после компиляции процедуры?
Пытается разрезолвить объекты. И (в случае неналичия объекта) вешает
ворнинг. Нуже ключик, который бы переключал в положение "ошибка".
И всё.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
set strict_check on
go
create procedure test
as
  select * from nonexistsingtable
go

msg .... level.... severity....
Table 'nonexistsingtable' doesnt exists, query failed

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35235982
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer hvladВерсионность метаданных в IB\FB не заставляет создавать версии всех записей старого формата в новом формате. Старые записи остаются на диске в старом формате, преобразование в новый формат происходит на лету, при их чтении. При такой схеме возможно нарушение старыми данными новых ограничений, и это нужно учитывать.
Боюсь, я не совсем понял. Момент физического преобразования с моей точки зрения малосущественен - пока это делается прозрачно для остальных модулей, это сугубо техническая деталь, не влияющая на концепцию. Теперь и я этого боюсь :)

softwarerА вот насчет нарушения..... Следует ли понимать так, когда я в IB делаю add constraint, это ограничение не проверяет старые данные?CHECK - не проверяет, PRIMARY\FOREIGN KEY\UNIQUE - проверяет конечно же.
Т.е. нарушение возможно для CHECK и, есс-но, не возможно для PRIMARY\FOREIGN\UNIQUE.

softwarerМне трудно назвать это корректной реализацией версионности...
Итого я пока не вижу возможности корректно обеспечить версионность при DDL.Никаких ужасов с нарушением ссылочной целостности и уникальности в IB\FB конечно же нет.
А вот при чём тут версионность - я не понял.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236013
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyНадо ключик...
Что сейчас делает линкер после компиляции процедуры?
Пытается разрезолвить объекты.

Ну, резолвит имена он как раз ДО компиляции. Надеюсь что под "компиляцией" мы оба понимаем одно и тоже - построение плана выполнения.

lockyНадо ключик...

Ключик, говорите... Который предназначался бы для админа. А будет ли знать админ, что 129 хп из 3854 действительно ссылаются на несуществующие таблицы и так "задумано" разработчиком?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236024
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:
> Ну, резолвит имена он как раз ДО компиляции. Надеюсь что под
> "компиляцией" мы оба понимаем одно и тоже - построение плана выполнения.
Нет, видимо нечто разное.
Первый этап - построение "синтаксического" дерева запроса.
Второй - resolve объектов из этого дерева, грубо говоря - привязка к
каждому узлу id процедуры, функции, таблицы, вьюшки и т.д.
После чего идет проверка- а все ли поля для разрезолвленых таблиц есть
(и вот тут - если что не так - скрипт сейчас валится).
А нужно проверить - а есть ли вообще неразрезолвленнные объекты, и если
есть - ну, писать ворнинг или ошибку (вот что скажу писать- пусть то и
пишут).
Хотя - ворнинг всегда могут писать, он вреда не принесёт. А по "ключику"
- пусть кидают ошибку.


> Ключик, говорите... Который предназначался бы для админа. А будет ли
> знать админ, что 129 хп из 3854 действительно ссылаются на
> несуществующие таблицы и так "задумано" разработчиком?
Ну... как вам сказать...
Не факт, что будет знать.
Но - инструмент, дающий 90% результат - лучше, нежели никакого инструмента.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236062
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyНу... как вам сказать...
Не факт, что будет знать.
Но - инструмент, дающий 90% результат - лучше, нежели никакого инструмента.

И так, я DBA, у которого имеется "такой инструмент". Запустил я скрипт проверки с таким ключиком, и получил в результате, что 10% хп ссылаются на несуществующие таблицы. Какой из этого можно вывод сделать при наличии DNR - правильно, никакого, ибо пока не стрести с разработчиков, а должны ли они существовать, никакого вывода о валидности сделать нельзя.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236086
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:
> И так, я DBA, у которого имеется "такой инструмент". Запустил я скрипт
> проверки с таким ключиком, и получил в результате, что 10% хп ссылаются
> на несуществующие таблицы. Какой из этого можно вывод сделать при
> наличии DNR - правильно, никакого, ибо пока не стрести с разработчиков,
> а должны ли они существовать, никакого вывода о валидности сделать нельзя.
Итак, я ДБА, который понятия не имеет, что у него 10% хп ссылаются на
несущствующий таблицы. Меньше знаешь - крепче спишь, что называется.
точнее, ну как "понятия не имею".... До первого запуска, разумеется....
А потом я подымаюсь (резко вскакиваю) с мягкого кресла и начинаю в поте
лиТца (или чего другого) отрабатывать свою ЗП.... нафиг-нафиг, хочу
быть предупрежденным.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236112
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 locky

По-моему мы друг друга не понимаем. Не может DBA (да и не должен, если он действительно DBA, а не три-в-одном) иметь понятия (в контексте парадигмы DNR) о том, какие объекты обязаны существовать на момент запуска хп. IMHO.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236133
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:
> По-моему мы друг друга не понимаем. Не может DBA (да и не должен, если
> он действительно DBA, а не три-в-одном) иметь понятия (в контексте
> парадигмы DNR) о том, какие объекты обязаны существовать на момент
> запуска хп. IMHO.
Дык, не всегда ДНР применяется, не так ли?
Не всегда. А вот ошибки от девелоперов - приходят постоянно.
Вот я и хотел бы иметь инструмент (и я его таки заведу!) дабы находить
такого рода ошибки.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236139
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin2 locky

По-моему мы друг друга не понимаем. Не может DBA (да и не должен, если он действительно DBA, а не три-в-одном) иметь понятия (в контексте парадигмы DNR) о том, какие объекты обязаны существовать на момент запуска хп. IMHO.
вот, а в оракле я точно знаю потому, что даже времянки и те у меня ОБЯЗАНЫ уже существовать. поэтому я не вскакиваю по ночам и знаю что у меня нет этих 10% :-P
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236147
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!потому, что даже времянки и те у меня ОБЯЗАНЫ уже существовать

Опять скатываемся на обсуждение DNR - хорошо или плохо. :)
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236148
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> вот, а в оракле я точно знаю потому, что даже времянки и те у меня
> ОБЯЗАНЫ уже существовать. поэтому я не вскакиваю по ночам и знаю что у
> меня нет этих 10% :-P
угу.... а еще я видел как бедные ораклоиды обходят ситуации, когда таки
"надо".
меня от dbms_sql до сих пор типает.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236156
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:
> Опять скатываемся на обсуждение DNR - хорошо или плохо. :)
И хорошо и плохо.
когда как.
а вот если иметь возможность управлять этим делом - тогда однозначно -
хорошо!
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236162
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:
> Опять скатываемся на обсуждение DNR - хорошо или плохо. :)
кстати, а ведь при schema binding - DNR не работает?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236163
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги. На сегодня вынужден откланяться.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236171
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
pkarklin wrote:
> Опять скатываемся на обсуждение DNR - хорошо или плохо. :)
кстати, а ведь при schema binding - DNR не работает?
Posted via ActualForum NNTP Server 1.4

хп и триггера в MS SQL не могут быть schema-bound.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236182
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:
> хп и триггера в MS SQL не могут быть schema-bound.
а функции (?) - могут.
значит - механизм есть, вот только "переключатель" - "протектед"
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236196
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyа функции (?) - могут.
значит - механизм есть, вот только "переключатель" - "протектед"

Могут. Но на функции не распространяется DNR. ;)
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236204
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
глупый вопрос, а DNR как расшифровывается ?
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236240
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.! wrote:
> глупый вопрос, а DNR как расшифровывается ?
отложенное разрешение имен
когда объекты резолвятся не на стадии парсинга, а непосредственно перед
выполнением.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236370
Тыкальщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий
Йо, я ж уже тыткал тебя носом в эту Аду...

--
With best regards, Мимопроходящий.

Oracle® Database PL/SQL User's Guide and Reference PL/SQL is based on the programming language Ada. As a result, PL/SQL uses a variant of Descriptive Intermediate Attributed Notation for Ada (DIANA), a tree-structured intermediate language. It is defined using a meta-notation called Interface Definition Language (IDL). DIANA is used internally by compilers and other tools.

At compile time, PL/SQL source code is translated into machine-readable m-code. Both the DIANA and m-code for a procedure or package are stored in the database. At run time, they are loaded into the shared memory pool. The DIANA is used to compile dependent procedures; the m-code is simply executed.
тык
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35236534
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Тыкальщик!
Ты пишешь:

ТыкальщикТ> тыкещё один...
в поиск!
быстра!

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35237583
Еще один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
Привет, Тыкальщик!
Ты пишешь:

ТыкальщикТ> тыкещё один...
в поиск!
быстра!

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
Все зависит от того как трактовать это самое "is based"... Ты хочешь сказать, что PL/SQL это вовсе не Ada? Дык, кто бы спорил, однако влияние налицо... это даже влиянием назвать нельзя - нагло содрано почти все (ну а все ненужное\несущественное - выброшено).
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35237588
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да не трогайте вы этого дурочка, ведь опять опять весь топик засрет. ну не видит он родства, ну и черт с ним. мы тут лучше DNR перетерем ...
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35237723
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 2008 актуальную информацию о состоянии и видах связей большинства объектов можно получить из sys.sql_expression_dependencies
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35253380
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:
> Я могу еще проблем накидать. ;)
Напоминаю об обещании :)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35253851
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
pkarklin wrote:
> Я могу еще проблем накидать. ;)
Напоминаю об обещании :)
Posted via ActualForum NNTP Server 1.4

Навскидку из тех, что былди в 2000. Зависание транзакции....
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35253952
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:
> Навскидку из тех, что былди в 2000. Зависание транзакции....
Не, меня интересуют те проблемы, которые находятся при помощи анализа
текста процедуры/функции/етк.
Хотя, кстати, коммит/ролбэк без бегин/сэйв трана - тоже надо запомнить.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35254056
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyНе, меня интересуют те проблемы, которые находятся при помощи анализа
текста процедуры/функции/етк.
Хотя, кстати, коммит/ролбэк без бегин/сэйв трана - тоже надо запомнить.

Ну так как раз "та самая" проблема. Ссылка на отсутствующий объект приводила к описанной по ссылке ситуации.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35254177
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:
> Ну так как раз "та самая" проблема. Ссылка на отсутствующий объект
> приводила к описанной по ссылке ситуации.
сорри, видимо - недочитал.
Это когда по 208 ошибке валится батч и транзакция остаётся
незакомиченной/неотролбеченой?
кстати, отлов ДНР - надо запомнить.
С таблицами/вью/ТВФ будут проблемы, а вот процедуры/скалярные функции -
это я влёгкую могу ловить.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35257309
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, наиболее "забавная" весчь, на мой взгля, это
Код: plaintext
1.
2.
3.
4.
create proc _TEST_
as begin
  select a,sum(b) from aaa group by c
end

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35257705
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
кстати, наиболее "забавная" весчь, на мой взгля, это
Код: plaintext
1.
2.
3.
4.
create proc _TEST_
as begin
  select a,sum(b) from aaa group by c
end


Гм... И что тут забавного?! Стадию синтаксического контроля эта конструкция в хп (да и не только в хп) пройдет на ура. А так как таблицы не существует, то наличие полей в ней при создании хп проверяться не будет. Все как и положено с DNR.

Сравните с:

Код: plaintext
1.
2.
3.
CREATE proc _TEST_
as begin
  select xtype, count(*) from sysobjects group by c
end
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35258015
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin locky
кстати, наиболее "забавная" весчь, на мой взгля, это
Код: plaintext
1.
2.
3.
4.
create proc _TEST_
as begin
  select a,sum(b) from aaa group by c
end


Гм... И что тут забавного?! Стадию синтаксического контроля эта конструкция в хп (да и не только в хп) пройдет на ура. А так как таблицы не существует, то наличие полей в ней при создании хп проверяться не будет. Все как и положено с DNR.

Сравните с:

Код: plaintext
1.
2.
3.
CREATE proc _TEST_
as begin
  select xtype, count(*) from sysobjects group by c
end



По идее, уже на стадии синтаксического контроля можно выдать ошибку:

Код: plaintext
Column 'aaaa.a' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35258032
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevПо идее, уже на стадии синтаксического контроля можно выдать ошибку:

Код: plaintext
Column 'aaaa.a' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.


Это уже "проблема" не DNR, а синтаксического разборщика, как такового. ;)
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35258058
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinЭто уже "проблема" не DNR, а синтаксического разборщика, как такового. ;)
Ну в общем да. Точнее - при программировании синтаксических анализаторов (ох, и ругались же мы с drev на эту тему ;-) есть практика - натыкаясь на ошибку, пытаться искусственно дополнить контекст и компилировать дальше (искать следующие ошибки). В данном случае было бы - найдя такой селект, дополнить метаданные таблицей aaa, колонками a, b, c и пахать дальше.

Правда, есть одна тонкость - не знаю как по синтаксису mssql, но a, b и c с тем же успехом могут оказаться, например, функциями. Я не готов оценить все возможные следствия и сказать "да, можно было бы сделать, получилось бы без особых проблем и лучше, чем без этого".
...
Рейтинг: 0 / 0
Циклы и IF'ы в Oracle по сравнению с MS SQL
    #35258121
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerПравда, есть одна тонкость - не знаю как по синтаксису mssql, но a, b и c с тем же успехом могут оказаться, например, функциями. Я не готов оценить все возможные следствия и сказать "да, можно было бы сделать, получилось бы без особых проблем и лучше, чем без этого".

В том, что "получилось бы без особых проблем и лучше, чем без этого" Вы правы, ибо синтаксис вызова скалярных функций требует обязательности наличия префикса схемы и скобок (даже если нет ни одного параметра), так что отличить имена колонок или их алиасы от функций можно (нужно).
...
Рейтинг: 0 / 0
134 сообщений из 134, показаны все 6 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Циклы и IF'ы в Oracle по сравнению с MS SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]