|
|
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Собственно,вопрос больше к знатокам Оракла... Но в сравнении с MS SQL'ем. Недавно спорили мы с одним человеком на давнюю тему MSSQL vs. Oracle и среди прочего затронули вопрос написания сторед-процедур. Он утерждает,что в Oracle нет таких конструкций,как IF и циклы (я слабо себе представляю многие мои сторед-процедуры без этого).Я же стоял на том,что ну не может такая серьезная система,как Оракл,существовать без таких простых вещей,как,например,IF.Он доказывал,что может и существует. Вобщем,отсюда вопрос... Есть ли аналог MSSQL'ных IF'ов и циклов (например,WHILE) в Oracle или нет. Спасибо и извиняюсь за такой несколько ламерский вопрос. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2008, 19:05 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
В PL/SQL есть конструкции Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2008, 19:11 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
!!!В SQL вместо MSSQL-ного if используется CASE ... END или функция decode() В MS SQL в SQL запросе if не используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2008, 19:18 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Локшин Марк !!!В SQL вместо MSSQL-ного if используется CASE ... END или функция decode() В MS SQL в SQL запросе if не используется.Вероятно, я ошибся, т.к. опыт работы с этим продуктом у меня минимальный :-) Помню что некая конструкция, аналогичная оракловому CASE, в MS SQL Server существовала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2008, 19:35 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
В MSSQL есть IF,но он действительно в запросе не используется,в запросе используется CASE,например Код: plaintext Код: plaintext 1. 2. 3. 4. Вот. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2008, 19:53 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Diablas пишет: > Он утерждает,что в Oracle нет таких конструкций,как IF и циклы (я слабо > себе представляю многие мои сторед-процедуры без этого). Он и прав, и не прав. Дело в том, что в ORACLE, в отличие от MSSQL, где язык один - TransactSQL - и для процедур, и для триггеров, и для запросов, языков у СУБД два - SQL и PL/SQL. В первом нет ни IF, ни циклов (CONNECT BY не в счет). Но на нем не пишутся ни процедуры, ни триггера. Они пишутся на PL/SQL. А там есть уже все. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2008, 23:22 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
MasterZivMSSQL,где язык один - TransactSQL - и для процедур, и для триггеров, и для запросов,А когда TransactSQL стал языком запросов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 10:23 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyА когда TransactSQL стал языком запросов? Он был им всегда. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 10:30 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey пишет: > А когда TransactSQL стал языком запросов? Со своего рождения. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 10:38 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
MasterZiv Он и прав, и не прав. Дело в том, что в ORACLE, в отличие от MSSQL, где язык один - TransactSQL - и для процедур, и для триггеров, и для запросов, языков у СУБД два - SQL и PL/SQL. не стоит принимать на веру все, что пишут на заборе, тьфу на MSDN ... ну не разобрались там, в том что SQL это вообще-то декларативный язык, а язык процедур - процедурный, ну бывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 10:40 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.!не стоит принимать на веру все, что пишут на заборе, тьфу на MSDN ... ну не разобрались там, в том что SQL это вообще-то декларативный язык, а язык процедур - процедурный, ну бывает Угу. Тока что PL\SQL, что T-SQL считаются процедрными расширениями декларативного SQL. Тока в MS не стали его дробить на два. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 10:47 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin Угу. Тока что PL\SQL, что T-SQL считаются процедрными расширениями декларативного SQL. Тока в MS не стали его дробить на два. нифига, где-то на MSDN было забавное определение сваливающее декларативность и процедурность в кучу, вечерком поищу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 10:57 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! пишет: > не стоит принимать на веру все, что пишут на заборе, тьфу на MSDN ... ну > не разобрались там, в том что SQL это вообще-то декларативный язык, а > язык процедур - процедурный, ну бывает Transact SQL - это один язык, включающий как подязык SQL (с расширениями). Он и декларативный, и императивный одновременно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 11:34 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
MasterZiv Bogdanov AndreyА когда TransactSQL стал языком запросов? Со своего рожденияТо есть в запросах можно использовать любые конструкции этого языка? Если нет, то языком запросов является не TransactSQL, а некое его подмножество. MasterZivTransact SQL - это один язык, включающий как подязык SQL (с расширениями). Он и декларативный, и императивный одновременно.Так в чем же разница с PL/SQL? Только в том, что Oracle терминологически разделил декларативную и процедурную части, а MSSQL решил терминологией себя не озабачивать. Количество имеющихся синтаксических конструкций практически одинаково. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 12:45 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
авторТо есть в запросах можно использовать любые конструкции этого языка? Что значит "любые конструкции"?! Как прикажете цикл в запросе использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 13:03 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey wrote: > Так в чем же разница с PL/SQL? А Вы знакомы с PL/SQL? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 13:03 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin авторТо есть в запросах можно использовать любые конструкции этого языка? Что значит "любые конструкции"?! Как прикажете цикл в запросе использовать?Ну этого я не знаю. Было утверждение, что TransactSQL - язык запросов, значит конструкции этого языка предназначены для написания запросов. Вот пусть автор утверждения и расскажет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 13:07 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey пишет: > То есть в запросах можно использовать любые конструкции этого языка? Ну в общем да, но не везде можно использовать все конструкции. Т.е. внутри SELECT-а написать IF например нельзя. Но например послать батч (посылку на сервер) типа Код: plaintext 1. 2. 3. 4. 5. Там либо ты посылаешь на сервер SQL - запрос, либо PL/SQL блок. В PL/SQL блоке конечно тоже можно сделать SELECT, но уже по-другому. > Так в чем же разница с PL/SQL? Только в том, что Oracle терминологически > разделил декларативную и процедурную части, а MSSQL решил терминологией > себя не озабачивать. Количество имеющихся синтаксических конструкций Не терминологически, а технологически. В оракле оно как-то поотдельности живет. Я выше попытался объяснить. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 13:09 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyБыло утверждение, что TransactSQL - язык запросов, значит конструкции этого языка предназначены для написания запросов. Вот пусть автор утверждения и расскажет. Еще как предназначены. Посмотрите любой скрипт на bid=1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 13:12 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyА Вы знакомы с PL/SQL?Мне казалось, что мы здесь не мои знания обсуждаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 13:12 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin Bogdanov AndreyБыло утверждение, что TransactSQL - язык запросов, значит конструкции этого языка предназначены для написания запросов. Вот пусть автор утверждения и расскажет. Еще как предназначены. Посмотрите любой скрипт на bid=1.А вы сейчас кому отвечаете? Если мне, то я не спрашивал предназначены ли конструкции TransactSQL для написания запросов. А если кому-то другому, то зачем меня цитировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 13:16 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
авторА вы сейчас кому отвечаете? Если мне, то я не спрашивал предназначены ли конструкции TransactSQL для написания запросов. Простите, следующее не Вы спрашивали?! Bogdanov AndreyА когда TransactSQL стал языком запросов? Bogdanov AndreyТо есть в запросах можно использовать любые конструкции этого языка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 13:21 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey wrote: > А Вы знакомы с PL/SQL? > > Мне казалось, что мы здесь не мои знания обсуждаем. Да, не их. Однако, если Вы не знакомы с PL/Sql, то было бы странно выслушивать Ваше мнение по поводу похожести и/или непохожести оного на T-Sql. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 14:35 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey Было утверждение, что TransactSQL - язык запросов, значит конструкции этого языка предназначены для написания запросов. Вот пусть автор утверждения и расскажет.Если у Вас автомобиль, предназначенных для перевозки 5 человек - это же не значит что на нём нельзя ездить одному по-моему демагогией занимаетесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 14:36 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin авторА вы сейчас кому отвечаете? Если мне, то я не спрашивал предназначены ли конструкции TransactSQL для написания запросов. Простите, следующее не Вы спрашивали?! Bogdanov AndreyА когда TransactSQL стал языком запросов? Bogdanov AndreyТо есть в запросах можно использовать любые конструкции этого языка А слово ЛЮБЫЕ вы решили проигнорировать. SergSuperпо-моему демагогией занимаетесьСогласен. Но начал это, на мой взгляд, MasterZiv утверждая, что в Oracle два языка, в то время как MSSQL - один. Если не заниматься буквоедством, то и в Oracle и в MSSQL есть два множества синтаксических конструкций - одно для написания запросов (собственно SQL) и второе - процедурное расширение. Естественно, есть некоторые технические различия в реализации. Ну а какое из этих множеств языком называть - это уже вопрос к марктологам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 14:59 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyОднако, если Вы не знакомы с PL/Sql, то было бы странно выслушивать Ваше мнение по поводу похожести и/или непохожести оного на T-Sql.А почему вы тогда моим знаниме T-sql не поинтересовались? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 15:01 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Не буду мудрствовать, из доки по ораклу Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. глянул в доке на варианты циклов loop, решил замучаюсь копировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 15:05 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey wrote: > А почему вы тогда моим знаниме T-sql не поинтересовались? Мог бы. Но априори я считаю, что раз Вы знаете что есть разница между т и скл - значит с т-скл вы знакомы. Но в т-скл грань между т и скл - крайне тонка, и многие её там не видят (хотя некоторые "хвосты" таки торчат наружу). а вот в пл/скл - грань есть, и весьма жОсткая. и проводить параллели между пл/скл и т-скл в виде "и то и другое - процедурное расширение, отличается только в деталях".... вот и поинтересовалсо. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 15:14 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklinЧто значит "любые конструкции"?! Как прикажете цикл в запросе использовать? Например, для выполнения задач, для которых в итоге придумали аналитические функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 19:52 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
locky > А почему вы тогда моим знаниме T-sql не поинтересовались? Мог бы. Но априори я считаю, что раз Вы знаете что есть разница между т и скл - значит с т-скл вы знакомы.Забавно. Все с точностью до наоборот. Oracle я непрерывно занимаюсь уже лет 15, а с MSSQL сталкиваюсь лишь эпизодически. То что подходы к реализации процедурного расширения у Oracle и MSSQL сильно отличаются хорошо видно, но утверждение о том, что в Oracle на "язык" больше крайне сомнительно, особенно не стоит этим пугать неискушенных посетителей форума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 08:54 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey locky > А почему вы тогда моим знаниме T-sql не поинтересовались? Мог бы. Но априори я считаю, что раз Вы знаете что есть разница между т и скл - значит с т-скл вы знакомы.Забавно. Все с точностью до наоборот. Oracle я непрерывно занимаюсь уже лет 15, а с MSSQL сталкиваюсь лишь эпизодически. То что подходы к реализации процедурного расширения у Oracle и MSSQL сильно отличаются хорошо видно, но утверждение о том, что в Oracle на "язык" больше крайне сомнительно, особенно не стоит этим пугать неискушенных посетителей форума. Ну если ты за 15 лет не понял что SQL и PL/SQL в Oracle это совершенно разные подсистемы, то это говорит лишь об уровне этих занятий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 09:05 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Ну если ты за 15 лет не понял что SQL и PL/SQL в Oracle это совершенно разные подсистемы, то это говорит лишь об уровне этих занятийНе тебе и не здесь оценивать мои знания. Это мои работодатели делают. Ну а переход на личности очень хорошо характеризует твои способности к дискусси. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 11:14 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey Gluk (Kazan)Ну если ты за 15 лет не понял что SQL и PL/SQL в Oracle это совершенно разные подсистемы, то это говорит лишь об уровне этих занятийНе тебе и не здесь оценивать мои знания. Это мои работодатели делают. Ну а переход на личности очень хорошо характеризует твои способности к дискусси. а сам ты свою кочку зрения чем аргументировал ? Способный ты наш мне накласть и на твой уровень и на твою квалификацию, но если ты заблуждаешься (а я это вижу), мой долг как честного человека попытаться тебя разубедить :( как ты объяснишь, что в Oracle некоторые конструкции работающие только в SQL, PL/SQL по прошествии некоторого количества версий начинают работать в PL/SQL терпеливо слушаю твою аргументацию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 12:22 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey wrote: > Забавно. Все с точностью до наоборот. Oracle я непрерывно занимаюсь уже > лет 15, а с MSSQL сталкиваюсь лишь эпизодически. > То что подходы к реализации процедурного расширения у Oracle и MSSQL > сильно отличаются хорошо видно, но утверждение о том, что в Oracle на > "язык" больше крайне сомнительно, особенно не стоит этим пугать > неискушенных посетителей форума. Значит, Вы незнакомы с Т-Скл, что, в принципе, сути особо не меняет. И в Оракл и правда - "на язык больше", просто Вы этого уже не замечаете - это для вас "обычное дело". Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 12:26 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)а сам ты свою кочку зрения чем аргументировал ? Способный ты наш мне накласть и на твой уровень и на твою квалификацию, но если ты заблуждаешься (а я это вижу), мой долг как честного человека попытаться тебя разубедить :( Значит переход на личности - ваш способ убеждения? Крайне плодотворно для дискуссий. Gluk (Kazan)как ты объяснишь, что в Oracle некоторые конструкции работающие только в SQL, PL/SQL по прошествии некоторого количества версий начинают работать в PL/SQL Для особо неспособных напоминаю, что я нигде не утверждал того, что реализация SQL и SQL в PL/SQL у Oracle суть одно и то же. Вот реализация SQL в Oracle 9 и Oracle 10 также несколько отличаются. Это уже разные языки? А еще в Тамбове и Москве разговривают немного по-разному - это мы тоже на разных языках говорим? Если каждое различие в диалектах новым языком обзывать - не многовато ли будет? Хотя вопрос конечно философский. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 12:49 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
2Bogdanov Andrey тоже вызывает удивление, что за 15 лет, вы не замечали, что еще в 9i элементарно типы данных много где не совпадали ? mssql просто удачней маскирует два обсалютно идеологически разных языка, хотя во сновном лишь за счет гораздо скудных возможностей. а вообще можно создавать аналог Бушизмов из цитат с MSDN, там Browser-PHP-RDBMS - 2-tier, транзакции в фокпро, вот и T-SQL из той же серии, декларативно-процедурный ... там наверника кто-то из вумных в гробу перевернулся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 13:03 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyЗначит, Вы незнакомы с Т-Скл, что, в принципе, сути особо не меняет. C T-sql я действительно весьма плохо знаком. lockyИ в Оракл и правда - "на язык больше", просто Вы этого уже не замечаете - это для вас "обычное дело".А почему тогда на "один"? В Oracle можно и больше языков насчитать. Например, с какой стати DML и DDL в один язык объединили? Вполне можно разными считать - в каждом свои сиинтаксические конструкции. Есть еще язык сценариев SQL*Plus - это совсем отдельная песня. А можно и про backup вспомнить - там тоже свои команды. Думаю, что языков с десяток наскребется. И все это против одного T-sql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 13:16 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! я чего-то уже не понимаю: что, на PL/SQL нельзя писать запросы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 13:16 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.!тоже вызывает удивление, что за 15 лет, вы не замечали, что еще в 9i элементарно типы данных много где не совпадали ? Я где-то утверждал, что совпадали? Типы данных и в 10-ке не совпадают. Любите вы выдумать себе оппонента и спорить с ним. Yo.!mssql просто удачней маскирует два обсалютно идеологически разных языка, Ну вот вы оказывается со мной не спорите, а соглашаетесь. Я нигде не утверждал, что в Oracle язык один, я просто утверждал, что в количестве языков между MSSQL и Oracle существенных различий нет, а сколько их - уже зависит от определения понятия "язык". SergSuper я чего-то уже не понимаю: что, на PL/SQL нельзя писать запросы?Вот о том и речь, что любят некоторые маститые свои знания продемонстрировать, а в итоге людей менее знакомых с ситуацией только запутывают. В данном случае формально можно сказать и то, что да, на PL/SQL запросы писать нельзя, просто PL/SQL допускает использование внутри себя другого языка - SQL. Можно сказать и по-другому - в PL/SQL запросы писать можно и для этого используются некоторые конструкции этого языка удивительно похожие на SQL. Ну а можно и по-простецки (к в MSSQL) считать SQL и PL/SQL одним языком. Ответов много, а суть при этом одна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 13:28 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
SergSuperYo.! я чего-то уже не понимаю: что, на PL/SQL нельзя писать запросы? нет, также как и на процедурном T-SQL, запросы пишутся на диалекте декларативного языка SQL, который через внешние нашлепки и схожесть типов данных может интегрироватся с процедурной частью, которая ничего общего с SQL не имеет. в случае с Oracle это тупо диалект языка Ада ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 13:28 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyЗначит переход на личности - ваш способ убеждения? Крайне плодотворно для дискуссий. Не вам и не здесь учить меня плодотворному ведению дискуссий (я тоже умею вставать в 1 позицию ) Если человека макают в г... его это как минимум настораживает если он не тормоз и не упертый баран, он начинает ДУМАТЬ и это вполне эффективно приводит к обогащению его жизненного опыта а мои перверсии и контрапупсии - дело третье В конце концов, что для ВАС важнее: МОЙ моральный облик или ВАШ жизненный опыт ??? Впрочем, решать ВАМ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 13:29 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Привет, Yo.!! Ты пишешь: Yo.!в случае с Oracle это тупо диалект языка Ада ...Йо, я ж уже тыткал тебя носом в эту Аду... -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 13:34 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.!нет, также как и на процедурном T-SQL, запросы пишутся на диалекте декларативного языка SQL, который через внешние нашлепки и схожесть типов данных может интегрироватся с процедурной частью, которая ничего общего с SQL не имеет. в случае с Oracle это тупо диалект языка Ада ...А вот конструкция SELECT ... INTO... - из какого языка? В SQL Reference при описании команды SELECT про INTO ничего не сказано. А вот в PL/SQL Reference эта конструкция описана. Следует ли из этого, что в PL/SQL есть операторы для манипулирования данными? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 13:43 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)В конце концов, что для ВАС важнее: МОЙ моральный облик или ВАШ жизненный опыт ???Бесспорно, я бесконечно благодарен вам за заботу о моем жизненном опыте. :) Gluk (Kazan)Не вам и не здесь учить меня плодотворному ведению дискуссий (я тоже умею вставать в 1 позицию ) В ответ на это могу процитировать одного, возможно уважаемого вами :), человека: Если человека макают в г... его это как минимум настораживает если он не тормоз и не упертый баран, он начинает ДУМАТЬ и это вполне эффективно приводит к обогащению его жизненного опыта Кстати, прошу прощения, что незаметно на "Вы" перешел. Надеюсь это не слишком оскорбительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 13:50 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий Йо, я ж уже тыткал тебя носом в эту Аду... угу, помню. весь форум ржал с твоих фантазий Bogdanov Andrey А вот конструкция SELECT ... INTO... - из какого языка? В SQL Reference при описании команды SELECT про INTO ничего не сказано. все правильно, в PL/SQL сказано, что о селекте смотреть SQL команду, вот это и есть пришлепка сверху которая пытается интегрировать диаметральные языки, если в тип переменной DIANA влезает тип поля из SQL, то конструкция даже бывает работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 14:06 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Привет, Yo.!! Ты пишешь: Yo.! МимопроходящийЙо, я ж уже тыткал тебя носом в эту Аду... Y> угу, помню. весь форум ржал с твоих фантазий уж не позорился бы Йоу... -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 14:16 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! Bogdanov Andrey А вот конструкция SELECT ... INTO... - из какого языка? В SQL Reference при описании команды SELECT про INTO ничего не сказано. все правильно, в PL/SQL сказано, что о селекте смотреть SQL команду, вот это и есть пришлепка сверху которая пытается интегрировать диаметральные языки, если в тип переменной DIANA влезает тип поля из SQL, то конструкция даже бывает работает Это не ответ на вопрос. Я пока вижу только то, что при описании синтаксиса оператора "SELECT INTO" делают ссылку на синтаксис оператора "SELECT" из другого языка. Это из экономии места весьма удобно. Все-таки если формально, в языке PL/SQL есть оператор для получния данных из таблиц или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 14:19 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey Gluk (Kazan)В конце концов, что для ВАС важнее: МОЙ моральный облик или ВАШ жизненный опыт ???Бесспорно, я бесконечно благодарен вам за заботу о моем жизненном опыте. :) Gluk (Kazan)Не вам и не здесь учить меня плодотворному ведению дискуссий (я тоже умею вставать в 1 позицию ) В ответ на это могу процитировать одного, возможно уважаемого вами :), человека: Если человека макают в г... его это как минимум настораживает если он не тормоз и не упертый баран, он начинает ДУМАТЬ и это вполне эффективно приводит к обогащению его жизненного опыта Кстати, прошу прощения, что незаметно на "Вы" перешел. Надеюсь это не слишком оскорбительно. Не понял, что ВЫ хотели сказать ентим постом Уважаемый Мнизойдите к скудоумию Вас окружающих, разжуйте ПЛИЗЗЗЗ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 14:37 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyЭто не ответ на вопрос. Я пока вижу только то, что при описании синтаксиса оператора "SELECT INTO" делают ссылку на синтаксис оператора "SELECT" из другого языка. Это из экономии места весьма удобно. Все-таки если формально, в языке PL/SQL есть оператор для получния данных из таблиц или нет? ну в этой редакции доки посчитали, что для девелопера будет удобней конструкцию которая является мостиком между двумя изолироваными мирами запихнуть в этот раздел, что с того ? это завется syntax sugar, от этого SQL не станет процедурней (гусары молчать, "особенную" субд не вспорминать ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 14:47 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
[quot Gluk (Kazan)]Не понял, что ВЫ хотели сказать ентим постом Уважаемый Мнизойдите к скудоумию Вас окружающих, разжуйте ПЛИЗЗЗЗ[/quotЭто про "прошу прощения"? Я попытался извиниться за необоснованное изменение личного обращения. Наша дискуссия началась на "ты". Некоторые участники форума, считают переход на "вы" оскорбительным - я не знаю точно отношения к данному вопросу каждого из участников (сам я достаточно безразличен к этому), но считаю, что извинение не помешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 15:34 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.!ну в этой редакции доки посчитали, что для девелопера будет удобней конструкцию которая является мостиком между двумя изолироваными мирами запихнуть в этот раздел, что с того ? это завется syntax sugar, от этого SQL не станет процедурней (гусары молчать, "особенную" субд не вспорминать ).И опять нет прямого ответа на вопрос :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 15:53 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyЯ попытался извиниться за необоснованное изменение личного обращения. Наша дискуссия началась на "ты". Некоторые участники форума, считают переход на "вы" оскорбительным - я не знаю точно отношения к данному вопросу каждого из участников (сам я достаточно безразличен к этому), но считаю, что извинение не помешает. В свою очередь прошу прощения. Я немножко излишне взвинчен сегодня (в связи с событиями не связанными с общением на форуме) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 16:23 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey wrote: > Например, с какой стати DML и DDL в один язык объединили? Вполне можно > разными считать - в каждом свои сиинтаксические конструкции. Есть еще Хм... а что, я могу перемежать, скажем, DML и DDL в pl/sql? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 16:33 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyХм... а что, я могу перемежать, скажем, DML и DDL в pl/sql? В PL/SQL Вы можете, скажем, перемежать DML и операторы управления транзакциями. Не можете перемежать DML и DDL. Внимание, вопрос: сколько же в результате мы получаем языков, почему именно столько и какое отношение к этому имеет возможность перемежать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 16:39 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
softwarer wrote: > В PL/SQL Вы можете, скажем, перемежать DML и операторы управления > транзакциями. Не можете перемежать DML и DDL. Внимание, вопрос: сколько > же в результате мы получаем языков, почему именно столько и какое > отношение к этому имеет возможность перемежать? а в т-скл можно перемежать... правда, не все ДДЛ допустимы, ессно.... в любом случае, в пл/скл граница куда более четкая, нежели в т-скл. насколько это хорощо - вопрос десятый. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 16:54 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyв любом случае, в пл/скл граница куда более четкая, нежели в т-скл. На практике - безусловно, куда более четкая. Правда, по моим, возможно неверным, представлениям это вызвано исключительно одной деталью - неявным возвратом рекордсетов, наличествующим в T-SQL. Согласитесь, например, что между Код: plaintext 1. 2. 3. и Код: plaintext 1. 2. 3. 4. 5. разницы, особенно внешней, не так много (и к сожалению не каждый ораклоид расскажет, в чем эта разница состоит). И по аналогичным причинам не особо видна разница между Код: plaintext 1. и Код: plaintext 1. 2. 3. (прошу прощения за возможные ошибки, мысль, я думаю, понятна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 17:08 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
locky а в т-скл можно перемежать... правда, не все ДДЛ допустимы, ессно.... перемежать и в оракле не проблема, проблема делать это в транзакции. в MSSQL точно также ничерта нельзя пережать на IL snapshot. для версионника это делать в транзакции криво идиологически .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 17:10 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
softwarer wrote: > разницы, особенно внешней, не так много (и к сожалению не каждый > ораклоид расскажет, в чем эта разница состоит). И по аналогичным > причинам не особо видна разница между Я, кстати, тоже не знаю - было интересно узнать, для "общего образования". больше всего лично мне не нравится путаница в типах данных между скл и пл/скл. обычно это вроде как не сильно важно, но иногда встреваем :( Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 17:27 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
locky softwarer wrote: > разницы, особенно внешней, не так много (и к сожалению не каждый > ораклоид расскажет, в чем эта разница состоит). И по аналогичным > причинам не особо видна разница между Я, кстати, тоже не знаю - было интересно узнать, для "общего образования". Ну например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 17:42 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyЯ, кстати, тоже не знаю - было интересно узнать, для "общего образования". Главным различием я бы назвал следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. На собеседовании кроме того был бы рад услышать соображения на тему разницы в скорости выполнения между этими случаями. Не буду клясться, что это вся разница, но кроме этого существенных соображений в голову не приходит. lockyбольше всего лично мне не нравится путаница в типах данных между скл и пл/скл. обычно это вроде как не сильно важно, но иногда встреваем :( Лично меня раздражает отсутствие boolean в SQL. А вообще... сейчас это малоактуально, а в восьмерке очень мешало - делаешь запрос, отлаживаешь, все отлично, вставляешь в PL/SQL - а он, сволочь, не компилируется. Типа "эта фича SQL в PL/SQL не поддерживается". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 17:53 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
softwarer Лично меня раздражает отсутствие boolean в SQL. А вообще... сейчас это малоактуально, а в восьмерке очень мешало - делаешь запрос, отлаживаешь, все отлично, вставляешь в PL/SQL - а он, сволочь, не компилируется. Типа "эта фича SQL в PL/SQL не поддерживается". сотню раз разжевывалось: прсото PL/SQL машина в момент компиляции проверяет синтаксис SQL, никакого отношения к PL/SQL они не имеют ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 18:03 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
softwarer wrote: > Главным различием я бы назвал следующее: да, про это я как-то забыл - незакетченный эксепшн на блоке.... а булеан... ну, обойтись можно, хотя и странно получается: булевские операции и условия - есть, а самого булеана - нету. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 18:28 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyа булеан... ну, обойтись можно Можно, но глупо. Получается буквально следующее: я пишу функцию с результатом boolean, какую-нибудь проверку. В один прекрасный день мне хочется использовать ее в запросе, и наступает бред. Какое решение ни принимай - все, мягко говоря, не лучшее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 18:37 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
locky> Главным различием я бы назвал следующее: да, про это я как-то забыл - незакетченный эксепшн на блоке....Но стоит отметить, что данное поведение не является отличием SQL и PL/SQL. Это просто общий для Oracle принцип "атомарности". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 19:25 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey wrote: > Но стоит отметить, что данное поведение не является отличием SQL и > PL/SQL. Это просто общий для Oracle принцип "атомарности". проведя опыты - мне не показалось, что это "общий принцип атомарности". без анонимного блока - одна строка, с анонимным блоком - ни одной. кроме того, поставив ексепт можно привести второй случай к первому Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 19:37 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! wrote: > версионника это делать в транзакции криво идиологически .... но ведь делают, собственно. пусть даже и говорят "это не в транзакции". Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 19:42 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyпроведя опыты - мне не показалось, что это "общий принцип атомарности" Тем не менее, это так и есть. Чтобы увидеть это, сравните, например, в моем примере (с i < 3) Код: plaintext 1. 2. 3. и Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 19:48 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
softwarer wrote: > Тем не менее, это так и есть. Чтобы увидеть это, сравните, например, в > моем примере (с i < 3) странный принцип, если честно. наверное, дело вкуса. набор стейтментов трактуется либо как набор (в первом случае), либо как единый стейтмент (в случае с блоком). хотя - на то блок и есть блок. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 19:58 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyнабор стейтментов трактуется либо как набор (в первом случае), Тут следует еще учесть, что в Oracle нет понятия "скрипт" или аналогичного (как в MS, если не ошибаюсь, batch). Набор стейтментов в первом случае - это server call с клиента для каждого insert-а поочередно. lockyхотя - на то блок и есть блок. Можно провести аналогию со вложенными транзакциями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 20:21 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyстранный принцип, если честно. наверное, дело вкуса.А на мой взгляд, нарушение этого принципа крайне станно. Можно, конечно, считать это делом вкуса. Вообще-то, математически подобные программные системы описываются теорией автоматов. И если операция недопустима (типа исключение произошло), то автомат не меняет свое состояние. lockyнабор стейтментов трактуется либо как набор (в первом случае), либо как единый стейтмент (в случае с блоком). хотя - на то блок и есть блок.В том-то и дело, что в случае с блоком это нет набора "стейтментов", есть одно обращение к базе данных. На которое она естественным образом реагирует. Собственно именно в этом месте, на мой взгляд, и есть основное идеологическое различие между PL/SQL И T-sql. Если первый с самого начала рос как процедурный язык интегрированный с SQL, то второй начинался скорее как скриптовый язык для работы с SQL-сервером. Это, естественно, мое субъективное восприятие, в упрощенном изложении :). Но оно живет у меня года с 95-го и никак не проходит. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 21:22 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyА на мой взгляд, нарушение этого принципа крайне странно. А я вполне понимаю обе точки зрения :) Сугубо формально можно сказать, что "когда сервер за меня что-то откатывает - это не есть хорошо, может я собирался исправить проблему и продолжить с места остановки". Однако на практике это удачное соглашение; я не припомню, чтобы оно мне мешало, зато в ряде случаев оно делает хороший код проще, а тупой код - надежнее. Bogdanov AndreyИ если операция недопустима (типа исключение произошло), то автомат не меняет свое состояние. Как мы с Вами знаем, в ряде аспектов состояние все-таки меняет. Поэтому выбор оказывается "в чем меняется, а в чем нет" - и это уже не вопрос формальной теории, вопрос практики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 21:37 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
softwarerСугубо формально можно сказать, что "когда сервер за меня что-то откатывает - это не есть хорошо, может я собирался исправить проблему и продолжить с места остановки".Эта позиция, на мой взгляд, крайне непродуктивна. По-моему, целостную парадигму на ее основе не построить. Ведь на самом деле даже при отдельно стоящем Insert его падению уже предшествовали какие-то действия (может быть там триггера были и т.п.), что-то в состоянии СУБД изменилось. К моменту получения exception успело выполниться несколько десятков (а может и сотен) команд процессора. Их мы тоже будем "продолжать с места остановки"? Все-таки все языки придерживаются принципа атомарности уровня оператора. Oracle просто попытался эту парадигму реализовать более глобально. Ну а насколько удачно - вопрос отдельный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 22:37 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! locky а в т-скл можно перемежать... правда, не все ДДЛ допустимы, ессно.... перемежать и в оракле не проблема, проблема делать это в транзакции. в MSSQL точно также ничерта нельзя пережать на IL snapshot. для версионника это делать в транзакции криво идиологически .... Простите за оффтоп и позднее зажигание: почему вы считаете что для версионника криво иметь DDL в транзакции? Контрпример - PostgreSQL, чистый версионник. За очень малым исключением (создание/удаление базы, tablespace и сборки мусора) DDL в транзакции допустим и работает абсолютно корректно. Почему орден св.Оракла это запрещает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 03:37 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyЭта позиция, на мой взгляд, крайне непродуктивна. Согласен. Я просто "истины ради" указал на возможность раскритиковать этот подход со стороны некоего также истинного утверждения (давайте не углубляться в детали атомарности... мне кажется, ситуация понятна - например, если я делал большой-большой апдейт, и он слетел на миллионной записи, я хочу повторить его с where id >= 1000000. Как я уже указал выше, мне нравится этот оракловый подход по сугубо статистическим причинам (нередко удобно, никогда не мешает). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 09:43 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
StXКонтрпример - PostgreSQL, чистый версионник. За очень малым исключением (создание/удаление базы, tablespace и сборки мусора) DDL в транзакции допустим и работает абсолютно корректно. Почему орден св.Оракла это запрещает? Коллега Yo отчасти горячится, но в его словах есть доля истины. Давайте я выдам одно очевидное соображение, а вы уж решайте, что есть чистый версионник и корректная работа. Утверждение: корректный внутритранзакционный DDL возможен только при serializable изоляции в жестком смысле этого слова (в том самом, в котором в Oracle вообще нет serializable) Обосновать это очень просто: представьте себе, что я делаю в транзакции некоторое изменение структуры таблицы, несовместимое со старой. Скажем, alter table drop column или alter table add foreign key. Далее в той же транзакции я делаю запрос к модифицированной таблице и как-то использую полученные данные. Проблема в том, что при любом уровне ниже serializable я при этом должен получить записи, параллельно вставленные другими транзакциями в старую версию структуры. Это выливается в проблемы либо на физическом уровне - то самое нет колонки, несовпадение форматов - либо, что куда страшнее, на логическом (новая логика захавала неконвертированные старые данные, нарушена целостность). Теперь давайте подумаем, что есть serializable в этом случае. На самом деле это ни что иное как эксклюзивная блокировка таблицы или иного крупного объекта (да еще и возможно с растущими из него). То есть решить эту задачу мы можем только блокировкой в худшем неверсионном стиле. Прошу прощения, я не спал ночь, может завтра подумаю получше и решу, что неправ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 10:06 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
softwarer wrote: > Теперь давайте подумаем, что есть serializable в этом случае. На самом > деле это ни что иное как эксклюзивная блокировка таблицы или иного > крупного объекта (да еще и возможно с растущими из него). То есть решить > эту задачу мы можем только блокировкой в худшем неверсионном стиле. Учитывая, что так или иначе подобного рода блокировка всё равно накладывается на время изменения метаданных, то единственным отрицательным побочным эффектом может являтся "кривизна рук" разработчика, который будет слишком долго держать транзакцию. Но это, как известно, решабельно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 11:21 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
softwarerпредставьте себе, что я делаю в транзакции некоторое изменение структуры таблицы, несовместимое со старой. Скажем, alter table drop column или alter table add foreign key. Далее в той же транзакции я делаю запрос к модифицированной таблице и как-то использую полученные данные. Проблема в том, что при любом уровне ниже serializable я при этом должен получить записи, параллельно вставленные другими транзакциями в старую версию структуры. Почему это ? Или имеются в виду записи в старом формате, вставленные до DDL ? В IB\FB, кстати, с этим проблем нет - они поддерживают версионность метаданных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 11:51 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
softwarer Мысль вроде понял. Неважно блокировочник это или версионник - DDL требует эксклюзивную блокировку объекта. По-крайней мере пока наука-чудесница ничего нового пока не предлагает... Но всё-таки, почему идеология "первого версионника" требует DDL сразу коммитить? Ведь обновления обычно накатывают не на живую систему; что с того что блокировка будет висеть? Неужели оставили ddl-in-tran на версию 12p? Теперь можно откатить весь патч целиком! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 11:56 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
locky Учитывая, что так или иначе подобного рода блокировка всё равно накладывается на время изменения метаданных, то единственным отрицательным побочным эффектом может являтся "кривизна рук" разработчика, который будет слишком долго держать транзакцию. Но это, как известно, решабельно. Posted via ActualForum NNTP Server 1.4 Шо, опять ? а статистика ? кроме блокировки на всю таблицу, при изменении структуры сбразывается вся статистика , таким образом DDL просто убивает оптимизатор, далее mssql и остальные реализовавшие эту идеологически кривую хрень не смогут сделать нормальное отслеживание зависимостей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 12:10 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
StX Но всё-таки, почему идеология "первого версионника" требует DDL сразу коммитить? Ведь обновления обычно накатывают не на живую систему; что с того что блокировка будет висеть? Неужели оставили ddl-in-tran на версию 12p? Теперь можно откатить весь патч целиком! в оракле есть десятки вариантов как быстро откатить все изменения DDL, в случае нуадачи одного из DDL. при этом если все прошло ОК, быть увереным, что процедуры не поломались. в MSSQL же в этом плане все совсем грустно, да можно быстро откатить если DDL вылетел с ошибкой, но если DDL сменила структуру таблицы на которую юзает некая сторед процедура которая из-за смены структуры поломалась то DBA об этом узнает только когда юзера начнут его подвешивать за яйца, и никаких инструментов гарантировано отловить поломаные процедуры нет и пока не предвидится ... вот тут долго пережевывали: /topic/488306&pg=8#4871292 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 12:19 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! wrote: > Шо, опять ? > а статистика ? кроме блокировки на всю таблицу, при изменении структуры > сбразывается вся статистика , таким образом DDL просто убивает > оптимизатор, далее mssql и остальные реализовавшие эту идеологически > кривую хрень не смогут сделать нормальное отслеживание зависимостей. "Идеологически неправильное" - это не к нам, это в ЦК. А то, что "при изменении структуры сбрасывается вся статистика" - так это, извините, кривизна реализации конкретной СУБД, а не "идеологически оправданное действие". Не вижу причины, по которой добавление нового столбца в таблицу должно приводить к сбросу статистики по уже имеющимся данным (впрочем, что конкретно в оракле подразумевают под "статистикой" - я имею достаточно смутное понятие) Также к сбросу статистики не может привести, например, изменение процедуры (ДДЛ как никак) И прочая, прочая.... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 12:25 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! wrote: > кривую хрень не смогут сделать нормальное отслеживание зависимостей. в 2008 вроде как обещались Тольком пока не смотрел, у меня свои методы отслеживания зависимостей, помедленнее, но понавороченней. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 12:26 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
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 не выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 12:31 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
locky Yo.! wrote: > кривую хрень не смогут сделать нормальное отслеживание зависимостей. в 2008 вроде как обещались Тольком пока не смотрел, у меня свои методы отслеживания зависимостей, помедленнее, но понавороченней. Posted via ActualForum NNTP Server 1.4 ага, я неделю клянчил показать скрипт, а вы с parklin меня неделю кормили бла-бла, путаясь в обилии бесплезных сп, так и не смогли показать ни скрипт, ни даже описать методологию как вы что-то там отслеживаете... с того времени что-то изменилось ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 12:34 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
StXНо всё-таки, почему идеология "первого версионника" требует DDL сразу коммитить? Ведь обновления обычно накатывают не на живую систему; что с того что блокировка будет висеть? Если накатывать обновления на мертвую систему, между вариантами "коммитить" и "не коммитить" разницы ровным счетом никакой. Только в одном случае при желании откатить делаем rollback, а в другом - flashback. Однако, идеологи Oracle уделяют прорву внимания системам 24x7x365, для которых надо именно что накатывать на живую базу. StXНеужели оставили ddl-in-tran на версию 12p? Не думаю. Нафига делать ненужный ddl in transaction? Лучше уж довести до ума create schema. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 12:43 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! wrote: > ага, я неделю клянчил показать скрипт, а вы с parklin меня неделю > кормили бла-бла, путаясь в обилии бесплезных сп, так и не смогли > показать ни скрипт, ни даже описать методологию как вы что-то там > отслеживаете... с того времени что-то изменилось ? Насчет скрипта - не помню, если честно... Что поменялось в 2008? Там ушли от идеи хранить зависимости в виде соответствий идентификаторов объетов (которых может на этот момент и не быть) и таки (наконец-то!) пришли к идее хранения зависимостей в виде соответствий литералов (которые то всегда есть). А как лично я отслеживаю? Ну, имея под рукой парсер - это всё элементарно :) (хотя и не так быстро, как мне бы хотелось). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 12:49 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
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 Я к тому не вижу принципиальной разницы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 12:53 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
locky А как лично я отслеживаю? Ну, имея под рукой парсер - это всё элементарно :) (хотя и не так быстро, как мне бы хотелось). Posted via ActualForum NNTP Server 1.4 вот тут я зададал прямой вопрос /topic/488306&pg=11#4884287 Yo.! будете, еще как в 2 часа ночи будете когда выяснится, что патч зацепил пару хп, а вы прозевали. короче Локи, это бесполезный разговор, хотите что-то доказать - скрипт в студию. как вы, конкретно вы отслеживаете результат выполнения батча с патчем и принимаете решение жать commit или rollback скрипта вы предоставить не смогли, за эти пол года у вас что-то принципиально изменилось ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 13:06 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
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 не заставляет создавать версии всех записей старого формата в новом формате. Старые записи остаются на диске в старом формате, преобразование в новый формат происходит на лету, при их чтении. При такой схеме возможно нарушение старыми данными новых ограничений, и это нужно учитывать. Зато не нужно модифицировать записи физически. Гм, кажется это несколько мимо темы топика :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 13:08 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! locky А как лично я отслеживаю? Ну, имея под рукой парсер - это всё элементарно :) (хотя и не так быстро, как мне бы хотелось). Posted via ActualForum NNTP Server 1.4 вот тут я зададал прямой вопрос /topic/488306&pg=11#4884287 Yo.! будете, еще как в 2 часа ночи будете когда выяснится, что патч зацепил пару хп, а вы прозевали. короче Локи, это бесполезный разговор, хотите что-то доказать - скрипт в студию. как вы, конкретно вы отслеживаете результат выполнения батча с патчем и принимаете решение жать commit или rollback скрипта вы предоставить не смогли, за эти пол года у вас что-то принципиально изменилось ? Интересно, а вот это что по-Вашему: Microsoft задавит Oracle Все закончилось тем, что у Вас под рукой не нашлось пропатченного сервера... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 13:13 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin Интересно, а вот это что по-Вашему: Microsoft задавит Oracle Все закончилось тем, что у Вас под рукой не нашлось пропатченного сервера... я в виндозное хоз-во стараюсь не лазить, потому так и не разжился пропатченым. попробую Express все же поставить и проверить. просто я потерял интерес поняв из дискусии, что эта сп появилась уже после выхода mssql2005 и никто из МСных DBA (в отличии от оракловых) не пытается проверять бд на предмет покареженных сп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 13:28 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
hvladВерсионность метаданных в IB\FB не заставляет создавать версии всех записей старого формата в новом формате. Старые записи остаются на диске в старом формате, преобразование в новый формат происходит на лету, при их чтении. При такой схеме возможно нарушение старыми данными новых ограничений, и это нужно учитывать. Боюсь, я не совсем понял. Момент физического преобразования с моей точки зрения малосущественен - пока это делается прозрачно для остальных модулей, это сугубо техническая деталь, не влияющая на концепцию. А вот насчет нарушения..... Следует ли понимать так, когда я в IB делаю add constraint, это ограничение не проверяет старые данные? Мне трудно назвать это корректной реализацией версионности, хотя я согласен, что это может быть рефлексом привычки. Однако, насколько я понимаю, практически это просто перекладывает на программиста груз добавления к скрипту необходимых проверок, то есть я должен написать что-то типа Код: plaintext 1. Что же мы получаем в таком случае? Да ровно то же самое, ровно ту же самую коллизию. Давайте представим себе, что наш скрипт имеет вид: Код: plaintext 1. 2. 3. 4. 5. И в случае, если кто-то впихнул свою запись в промежутке между проверкой (exists) и дальнейшими манипуляциями (select) наша любимая целостность накрывается белой простыней и тихо ползет к ближайшему кладбищу. В RC - потому что кривые данные попали в обработку, в более высоких уровнях ниже serializable, если они есть - потому что хоть и не попали в селект, но попали в таблицу, хотя нарушают целостность. Итого я пока не вижу возможности корректно обеспечить версионность при DDL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 13:42 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! wrote: > будете, еще как в 2 часа ночи будете когда выяснится, что патч зацепил > пару хп, а вы прозевали. > короче Локи, это бесполезный разговор, хотите что-то доказать - скрипт в > студию. как вы, конкретно вы отслеживаете результат выполнения батча с > патчем и принимаете решение жать commit или rollback да, вспомнил. Отвечу уклончиво: по результату исполнения скрипта с патчем можно определить часть проблем (как-то - неналичие процедур, которые мы пытаемся вызывать). остальные проблемы в части неналичия объектов определить проблематично. Т.е. нет запроса вроде "выбрать все невалидные объекты". но тут уже - "шило против мыла": иметь возможность откатить заведомо неправильный патч не имея возможно определить "скрытые" ошибки - или иметь возможность определить "скрытые ошибки" но не иметь возможности откатить патч. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 14:02 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > Интересно, а вот это что по-Вашему: Это не совсем то, наверное, что имел в виду Йо. Если мы изменим структуру таблицы - то да, буде ошибка (хотя - надо еще определить, какие процедуры проверять). А вот если мы дропнем таблицу... то всё не так однозначно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 14:16 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
locky но тут уже - "шило против мыла": иметь возможность откатить заведомо неправильный патч не имея возможно определить "скрытые" ошибки - или иметь возможность определить "скрытые ошибки" но не иметь возможности откатить патч. Posted via ActualForum NNTP Server 1.4 в том то и фича что в оракле проблемы шила и мыла, если перед накатом всех выгнали - то откатывается вообще тривиально, но если нельзя совсем всех выгнать. то тут сложнее, но опять же фичи оракла наверника позволят и сложнее сценарий - сходу идея выводить кусками бд и патчить куски (если что возращать назад таблеспейс к примеру). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 14:17 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyЭто не совсем то, наверное, что имел в виду Йо. Если мы изменим структуру таблицы - то да, буде ошибка (хотя - надо еще определить, какие процедуры проверять). А вот если мы дропнем таблицу... то всё не так однозначно. Определить какие, поможет sys.sql_dependencies. С учетом специфики MS SQL в плане Deferred Name Resolution (обсуждалось) хп, которая ссылается на несуществующую таблицу, является "валидной". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 14:20 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! wrote: > в том то и фича что в оракле проблемы шила и мыла, если перед накатом > всех выгнали - то откатывается вообще тривиально, но если нельзя совсем > всех выгнать. то тут сложнее, но опять же фичи оракла наверника позволят > и сложнее сценарий - сходу идея выводить кусками бд и патчить куски > (если что возращать назад таблеспейс к примеру). :)) Очень приятно, наверное, выгнать всех к чертям, когда накатываешь патч на маааахонькую часть базы - зато сразу видно, "кто тут хозяин". Но это - лирика. Фичи сиквела, кстати, тоже позволяют "посложнее сценарий" - но нас интересуют сценарии попроще. В сиквеле есть возможность откатить патч, но нет простой возможности его проверить. В оракле - есть простая (ну, относительно) возможность проверить патч, но нет простой возможности его проверить. Не вижу смысла спорить - какой из недостатков является не недостатком, а "выдающимся преимуществом единственно правильной СУБД". И то, и другое - недостатки, по другом не скажешь. зы в МС СКЛ, кстати, при желании - разрабы исправят недостаток куда быстрее и проще. Надо им на это намекнуть. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 14:23 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > Определить какие, поможет sys.sql_dependencies. С учетом специфики MS > SQL в плане *Deferred Name Resolution* (обсуждалось) хп, которая > ссылается на несуществующую таблицу, является "валидной". Об чем и речь. Второй проблемой может быть несовпадение к-ва параметров в сигнатуре процедуры и при её вызовах - это видно только при ран-тайме. Это же самое относится к декларации курсора и несовпадении списка переменных при fetch. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 14:24 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyОб чем и речь. Второй проблемой может быть несовпадение к-ва параметров в сигнатуре процедуры и при её вызовах - это видно только при ран-тайме. Это же самое относится к декларации курсора и несовпадении списка переменных при fetch. Я могу еще проблем накидать. ;) В таком случие нада "замахиваться" на саму концепцию компиляции хп только при первом запуске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 14:31 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > Я могу еще проблем накидать. ;) В таком случие нада "замахиваться" на > саму концепцию компиляции хп только при первом запуске. Кстати, было бы недурственно, потому как я о таких проблемах вспоминаю "по факту" - а надо бы полный список составить. А не надо "замахиваться". Надо ключик... Что сейчас делает линкер после компиляции процедуры? Пытается разрезолвить объекты. И (в случае неналичия объекта) вешает ворнинг. Нуже ключик, который бы переключал в положение "ошибка". И всё. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 14:34 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
softwarer hvladВерсионность метаданных в IB\FB не заставляет создавать версии всех записей старого формата в новом формате. Старые записи остаются на диске в старом формате, преобразование в новый формат происходит на лету, при их чтении. При такой схеме возможно нарушение старыми данными новых ограничений, и это нужно учитывать. Боюсь, я не совсем понял. Момент физического преобразования с моей точки зрения малосущественен - пока это делается прозрачно для остальных модулей, это сугубо техническая деталь, не влияющая на концепцию. Теперь и я этого боюсь :) softwarerА вот насчет нарушения..... Следует ли понимать так, когда я в IB делаю add constraint, это ограничение не проверяет старые данные?CHECK - не проверяет, PRIMARY\FOREIGN KEY\UNIQUE - проверяет конечно же. Т.е. нарушение возможно для CHECK и, есс-но, не возможно для PRIMARY\FOREIGN\UNIQUE. softwarerМне трудно назвать это корректной реализацией версионности... Итого я пока не вижу возможности корректно обеспечить версионность при DDL.Никаких ужасов с нарушением ссылочной целостности и уникальности в IB\FB конечно же нет. А вот при чём тут версионность - я не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 14:41 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyНадо ключик... Что сейчас делает линкер после компиляции процедуры? Пытается разрезолвить объекты. Ну, резолвит имена он как раз ДО компиляции. Надеюсь что под "компиляцией" мы оба понимаем одно и тоже - построение плана выполнения. lockyНадо ключик... Ключик, говорите... Который предназначался бы для админа. А будет ли знать админ, что 129 хп из 3854 действительно ссылаются на несуществующие таблицы и так "задумано" разработчиком? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 14:53 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > Ну, резолвит имена он как раз ДО компиляции. Надеюсь что под > "компиляцией" мы оба понимаем одно и тоже - построение плана выполнения. Нет, видимо нечто разное. Первый этап - построение "синтаксического" дерева запроса. Второй - resolve объектов из этого дерева, грубо говоря - привязка к каждому узлу id процедуры, функции, таблицы, вьюшки и т.д. После чего идет проверка- а все ли поля для разрезолвленых таблиц есть (и вот тут - если что не так - скрипт сейчас валится). А нужно проверить - а есть ли вообще неразрезолвленнные объекты, и если есть - ну, писать ворнинг или ошибку (вот что скажу писать- пусть то и пишут). Хотя - ворнинг всегда могут писать, он вреда не принесёт. А по "ключику" - пусть кидают ошибку. > Ключик, говорите... Который предназначался бы для админа. А будет ли > знать админ, что 129 хп из 3854 действительно ссылаются на > несуществующие таблицы и так "задумано" разработчиком? Ну... как вам сказать... Не факт, что будет знать. Но - инструмент, дающий 90% результат - лучше, нежели никакого инструмента. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 14:58 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyНу... как вам сказать... Не факт, что будет знать. Но - инструмент, дающий 90% результат - лучше, нежели никакого инструмента. И так, я DBA, у которого имеется "такой инструмент". Запустил я скрипт проверки с таким ключиком, и получил в результате, что 10% хп ссылаются на несуществующие таблицы. Какой из этого можно вывод сделать при наличии DNR - правильно, никакого, ибо пока не стрести с разработчиков, а должны ли они существовать, никакого вывода о валидности сделать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:06 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > И так, я DBA, у которого имеется "такой инструмент". Запустил я скрипт > проверки с таким ключиком, и получил в результате, что 10% хп ссылаются > на несуществующие таблицы. Какой из этого можно вывод сделать при > наличии DNR - правильно, никакого, ибо пока не стрести с разработчиков, > а должны ли они существовать, никакого вывода о валидности сделать нельзя. Итак, я ДБА, который понятия не имеет, что у него 10% хп ссылаются на несущствующий таблицы. Меньше знаешь - крепче спишь, что называется. точнее, ну как "понятия не имею".... До первого запуска, разумеется.... А потом я подымаюсь (резко вскакиваю) с мягкого кресла и начинаю в поте лиТца (или чего другого) отрабатывать свою ЗП.... нафиг-нафиг, хочу быть предупрежденным. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:13 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
2 locky По-моему мы друг друга не понимаем. Не может DBA (да и не должен, если он действительно DBA, а не три-в-одном) иметь понятия (в контексте парадигмы DNR) о том, какие объекты обязаны существовать на момент запуска хп. IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:18 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > По-моему мы друг друга не понимаем. Не может DBA (да и не должен, если > он действительно DBA, а не три-в-одном) иметь понятия (в контексте > парадигмы DNR) о том, какие объекты обязаны существовать на момент > запуска хп. IMHO. Дык, не всегда ДНР применяется, не так ли? Не всегда. А вот ошибки от девелоперов - приходят постоянно. Вот я и хотел бы иметь инструмент (и я его таки заведу!) дабы находить такого рода ошибки. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:21 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin2 locky По-моему мы друг друга не понимаем. Не может DBA (да и не должен, если он действительно DBA, а не три-в-одном) иметь понятия (в контексте парадигмы DNR) о том, какие объекты обязаны существовать на момент запуска хп. IMHO. вот, а в оракле я точно знаю потому, что даже времянки и те у меня ОБЯЗАНЫ уже существовать. поэтому я не вскакиваю по ночам и знаю что у меня нет этих 10% :-P ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:23 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.!потому, что даже времянки и те у меня ОБЯЗАНЫ уже существовать Опять скатываемся на обсуждение DNR - хорошо или плохо. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:25 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! wrote: > вот, а в оракле я точно знаю потому, что даже времянки и те у меня > ОБЯЗАНЫ уже существовать. поэтому я не вскакиваю по ночам и знаю что у > меня нет этих 10% :-P угу.... а еще я видел как бедные ораклоиды обходят ситуации, когда таки "надо". меня от dbms_sql до сих пор типает. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:25 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > Опять скатываемся на обсуждение DNR - хорошо или плохо. :) И хорошо и плохо. когда как. а вот если иметь возможность управлять этим делом - тогда однозначно - хорошо! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:25 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > Опять скатываемся на обсуждение DNR - хорошо или плохо. :) кстати, а ведь при schema binding - DNR не работает? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:26 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Коллеги. На сегодня вынужден откланяться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:26 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
locky pkarklin wrote: > Опять скатываемся на обсуждение DNR - хорошо или плохо. :) кстати, а ведь при schema binding - DNR не работает? Posted via ActualForum NNTP Server 1.4 хп и триггера в MS SQL не могут быть schema-bound. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:27 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > хп и триггера в MS SQL не могут быть schema-bound. а функции (?) - могут. значит - механизм есть, вот только "переключатель" - "протектед" Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:29 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyа функции (?) - могут. значит - механизм есть, вот только "переключатель" - "протектед" Могут. Но на функции не распространяется DNR. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:32 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
глупый вопрос, а DNR как расшифровывается ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:35 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Yo.! wrote: > глупый вопрос, а DNR как расшифровывается ? отложенное разрешение имен когда объекты резолвятся не на стадии парсинга, а непосредственно перед выполнением. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 15:44 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий Йо, я ж уже тыткал тебя носом в эту Аду... -- 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. тык ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 16:13 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Привет, Тыкальщик! Ты пишешь: ТыкальщикТ> тыкещё один... в поиск! быстра! -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 16:47 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий Привет, Тыкальщик! Ты пишешь: ТыкальщикТ> тыкещё один... в поиск! быстра! -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 Все зависит от того как трактовать это самое "is based"... Ты хочешь сказать, что PL/SQL это вовсе не Ada? Дык, кто бы спорил, однако влияние налицо... это даже влиянием назвать нельзя - нагло содрано почти все (ну а все ненужное\несущественное - выброшено). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2008, 17:38 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
да не трогайте вы этого дурочка, ведь опять опять весь топик засрет. ну не видит он родства, ну и черт с ним. мы тут лучше DNR перетерем ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2008, 17:50 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
В 2008 актуальную информацию о состоянии и видах связей большинства объектов можно получить из sys.sql_expression_dependencies ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2008, 22:24 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > Я могу еще проблем накидать. ;) Напоминаю об обещании :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 13:39 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
locky pkarklin wrote: > Я могу еще проблем накидать. ;) Напоминаю об обещании :) Posted via ActualForum NNTP Server 1.4 Навскидку из тех, что былди в 2000. Зависание транзакции.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 15:53 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > Навскидку из тех, что былди в 2000. Зависание транзакции.... Не, меня интересуют те проблемы, которые находятся при помощи анализа текста процедуры/функции/етк. Хотя, кстати, коммит/ролбэк без бегин/сэйв трана - тоже надо запомнить. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 16:21 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
lockyНе, меня интересуют те проблемы, которые находятся при помощи анализа текста процедуры/функции/етк. Хотя, кстати, коммит/ролбэк без бегин/сэйв трана - тоже надо запомнить. Ну так как раз "та самая" проблема. Ссылка на отсутствующий объект приводила к описанной по ссылке ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 16:47 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > Ну так как раз "та самая" проблема. Ссылка на отсутствующий объект > приводила к описанной по ссылке ситуации. сорри, видимо - недочитал. Это когда по 208 ошибке валится батч и транзакция остаётся незакомиченной/неотролбеченой? кстати, отлов ДНР - надо запомнить. С таблицами/вью/ТВФ будут проблемы, а вот процедуры/скалярные функции - это я влёгкую могу ловить. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 17:16 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
кстати, наиболее "забавная" весчь, на мой взгля, это Код: plaintext 1. 2. 3. 4. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 19:59 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
locky кстати, наиболее "забавная" весчь, на мой взгля, это Код: plaintext 1. 2. 3. 4. Гм... И что тут забавного?! Стадию синтаксического контроля эта конструкция в хп (да и не только в хп) пройдет на ура. А так как таблицы не существует, то наличие полей в ней при создании хп проверяться не будет. Все как и положено с DNR. Сравните с: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 08:49 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklin locky кстати, наиболее "забавная" весчь, на мой взгля, это Код: plaintext 1. 2. 3. 4. Гм... И что тут забавного?! Стадию синтаксического контроля эта конструкция в хп (да и не только в хп) пройдет на ура. А так как таблицы не существует, то наличие полей в ней при создании хп проверяться не будет. Все как и положено с DNR. Сравните с: Код: plaintext 1. 2. 3. По идее, уже на стадии синтаксического контроля можно выдать ошибку: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 10:41 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
drevПо идее, уже на стадии синтаксического контроля можно выдать ошибку: Код: plaintext Это уже "проблема" не DNR, а синтаксического разборщика, как такового. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 10:44 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
pkarklinЭто уже "проблема" не DNR, а синтаксического разборщика, как такового. ;) Ну в общем да. Точнее - при программировании синтаксических анализаторов (ох, и ругались же мы с drev на эту тему ;-) есть практика - натыкаясь на ошибку, пытаться искусственно дополнить контекст и компилировать дальше (искать следующие ошибки). В данном случае было бы - найдя такой селект, дополнить метаданные таблицей aaa, колонками a, b, c и пахать дальше. Правда, есть одна тонкость - не знаю как по синтаксису mssql, но a, b и c с тем же успехом могут оказаться, например, функциями. Я не готов оценить все возможные следствия и сказать "да, можно было бы сделать, получилось бы без особых проблем и лучше, чем без этого". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 10:49 |
|
||
|
Циклы и IF'ы в Oracle по сравнению с MS SQL
|
|||
|---|---|---|---|
|
#18+
softwarerПравда, есть одна тонкость - не знаю как по синтаксису mssql, но a, b и c с тем же успехом могут оказаться, например, функциями. Я не готов оценить все возможные следствия и сказать "да, можно было бы сделать, получилось бы без особых проблем и лучше, чем без этого". В том, что "получилось бы без особых проблем и лучше, чем без этого" Вы правы, ибо синтаксис вызова скалярных функций требует обязательности наличия префикса схемы и скобок (даже если нет ни одного параметра), так что отличить имена колонок или их алиасы от функций можно (нужно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 11:03 |
|
||
|
|

start [/forum/topic.php?all=1&fid=35&tid=1553133]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
120ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 433ms |

| 0 / 0 |
