Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6   вперед  Ctrl      все
 Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
Diablas
Member

Откуда:
Сообщений: 2
Собственно,вопрос больше к знатокам Оракла... Но в сравнении с MS SQL'ем.
Недавно спорили мы с одним человеком на давнюю тему MSSQL vs. Oracle и среди прочего затронули вопрос написания сторед-процедур.
Он утерждает,что в Oracle нет таких конструкций,как IF и циклы (я слабо себе представляю многие мои сторед-процедуры без этого).Я же стоял на том,что ну не может такая серьезная система,как Оракл,существовать без таких простых вещей,как,например,IF.Он доказывал,что может и существует.

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

Спасибо и извиняюсь за такой несколько ламерский вопрос. :)
27 мар 08, 19:05    [5469961]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
!!!
Member

Откуда: Да все оттуда
Сообщений: 390
В PL/SQL есть конструкции
if <> then
...
elsif <> then
...
else
...
end if;
и
 FOR i IN 1 .. 10 LOOP
 ...
 END LOOP;
В SQL вместо MSSQL-ного if используется CASE ... END или функция decode()
27 мар 08, 19:11    [5469974]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
Локшин Марк
Member

Откуда: Воронеж
Сообщений: 3155
!!!
В SQL вместо MSSQL-ного if используется CASE ... END или функция decode()

В MS SQL в SQL запросе if не используется.
27 мар 08, 19:18    [5469992]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
!!!
Member

Откуда: Да все оттуда
Сообщений: 390
Локшин Марк
!!!
В SQL вместо MSSQL-ного if используется CASE ... END или функция decode()

В MS SQL в SQL запросе if не используется.
Вероятно, я ошибся, т.к. опыт работы с этим продуктом у меня минимальный :-) Помню что некая конструкция, аналогичная оракловому CASE, в MS SQL Server существовала.
27 мар 08, 19:35    [5470043]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
Diablas
Member

Откуда:
Сообщений: 2
В MSSQL есть IF,но он действительно в запросе не используется,в запросе используется CASE,например
SELECT field1, CASE field2 WHEN значение THEN другое значение ELSE еще значение END, field3
Но в сторед-процедуре можно написать
IF условие BEGIN
SELECT бла-бла-бла
ELSE
SELECT дргое бла-бла-бла
END

Вот. :)
27 мар 08, 19:53    [5470080]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

Diablas пишет:

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

Он и прав, и не прав. Дело в том, что в ORACLE, в отличие от MSSQL,
где язык один - TransactSQL - и для процедур, и для триггеров, и для
запросов, языков у СУБД два - SQL и PL/SQL. В первом нет ни IF, ни
циклов (CONNECT BY не в счет). Но на нем не пишутся ни процедуры,
ни триггера. Они пишутся на PL/SQL. А там есть уже все.

Posted via ActualForum NNTP Server 1.4

27 мар 08, 23:22    [5470512]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
MasterZiv
MSSQL,где язык один - TransactSQL - и для процедур, и для триггеров, и для
запросов,
А когда TransactSQL стал языком запросов?
2 апр 08, 10:23    [5490466]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Bogdanov Andrey
А когда TransactSQL стал языком запросов?


Он был им всегда. :)
2 апр 08, 10:30    [5490512]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

Bogdanov Andrey пишет:

> А когда TransactSQL стал языком запросов?
Со своего рождения.

Posted via ActualForum NNTP Server 1.4

2 апр 08, 10:38    [5490571]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
Yo.!
Guest
MasterZiv

Он и прав, и не прав. Дело в том, что в ORACLE, в отличие от MSSQL,
где язык один - TransactSQL - и для процедур, и для триггеров, и для
запросов, языков у СУБД два - SQL и PL/SQL.

не стоит принимать на веру все, что пишут на заборе, тьфу на MSDN ... ну не разобрались там, в том что SQL это вообще-то декларативный язык, а язык процедур - процедурный, ну бывает
2 апр 08, 10:40    [5490588]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
не стоит принимать на веру все, что пишут на заборе, тьфу на MSDN ... ну не разобрались там, в том что SQL это вообще-то декларативный язык, а язык процедур - процедурный, ну бывает


Угу. Тока что PL\SQL, что T-SQL считаются процедрными расширениями декларативного SQL. Тока в MS не стали его дробить на два.
2 апр 08, 10:47    [5490628]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
Yo.!
Guest
pkarklin

Угу. Тока что PL\SQL, что T-SQL считаются процедрными расширениями декларативного SQL. Тока в MS не стали его дробить на два.

нифига, где-то на MSDN было забавное определение сваливающее декларативность и процедурность в кучу, вечерком поищу.
2 апр 08, 10:57    [5490695]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

Yo.! пишет:
> не стоит принимать на веру все, что пишут на заборе, тьфу на MSDN ... ну
> не разобрались там, в том что SQL это вообще-то декларативный язык, а
> язык процедур - процедурный, ну бывает

Transact SQL - это один язык, включающий как подязык SQL (с расширениями).
Он и декларативный, и императивный одновременно.

Posted via ActualForum NNTP Server 1.4

2 апр 08, 11:34    [5490963]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
MasterZiv
Bogdanov Andrey
А когда TransactSQL стал языком запросов?


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

MasterZiv
Transact SQL - это один язык, включающий как подязык SQL (с расширениями).
Он и декларативный, и императивный одновременно.
Так в чем же разница с PL/SQL? Только в том, что Oracle терминологически разделил декларативную и процедурную части, а MSSQL решил терминологией себя не озабачивать. Количество имеющихся синтаксических конструкций практически одинаково.
2 апр 08, 12:45    [5491622]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
То есть в запросах можно использовать любые конструкции этого языка?


Что значит "любые конструкции"?! Как прикажете цикл в запросе использовать?
2 апр 08, 13:03    [5491765]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Bogdanov Andrey wrote:
> Так в чем же разница с PL/SQL?
А Вы знакомы с PL/SQL?

Posted via ActualForum NNTP Server 1.4

2 апр 08, 13:03    [5491766]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
pkarklin
автор
То есть в запросах можно использовать любые конструкции этого языка?


Что значит "любые конструкции"?! Как прикажете цикл в запросе использовать?
Ну этого я не знаю. Было утверждение, что TransactSQL - язык запросов, значит конструкции этого языка предназначены для написания запросов. Вот пусть автор утверждения и расскажет.
2 апр 08, 13:07    [5491790]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709
Bogdanov Andrey пишет:

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

Ну в общем да, но не везде можно использовать все конструкции.
Т.е. внутри SELECT-а написать IF например нельзя.
Но например послать батч (посылку на сервер) типа
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

Сообщение было отредактировано: 2 апр 08, 14:29
2 апр 08, 13:09    [5491804]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Bogdanov Andrey
Было утверждение, что TransactSQL - язык запросов, значит конструкции этого языка предназначены для написания запросов. Вот пусть автор утверждения и расскажет.


Еще как предназначены. Посмотрите любой скрипт на bid=1.
2 апр 08, 13:12    [5491834]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
locky
А Вы знакомы с PL/SQL?
Мне казалось, что мы здесь не мои знания обсуждаем.
2 апр 08, 13:12    [5491837]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
pkarklin
Bogdanov Andrey
Было утверждение, что TransactSQL - язык запросов, значит конструкции этого языка предназначены для написания запросов. Вот пусть автор утверждения и расскажет.


Еще как предназначены. Посмотрите любой скрипт на bid=1.
А вы сейчас кому отвечаете? Если мне, то я не спрашивал предназначены ли конструкции TransactSQL для написания запросов. А если кому-то другому, то зачем меня цитировать?
2 апр 08, 13:16    [5491865]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
А вы сейчас кому отвечаете? Если мне, то я не спрашивал предназначены ли конструкции TransactSQL для написания запросов.


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

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


Bogdanov Andrey
То есть в запросах можно использовать любые конструкции этого языка
2 апр 08, 13:21    [5491913]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Bogdanov Andrey wrote:
> А Вы знакомы с PL/SQL?
>
> Мне казалось, что мы здесь не мои знания обсуждаем.
Да, не их.
Однако, если Вы не знакомы с PL/Sql, то было бы странно выслушивать Ваше
мнение по поводу похожести и/или непохожести оного на T-Sql.

Posted via ActualForum NNTP Server 1.4

2 апр 08, 14:35    [5492471]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Bogdanov Andrey
Было утверждение, что TransactSQL - язык запросов, значит конструкции этого языка предназначены для написания запросов. Вот пусть автор утверждения и расскажет.
Если у Вас автомобиль, предназначенных для перевозки 5 человек - это же не значит что на нём нельзя ездить одному

по-моему демагогией занимаетесь
2 апр 08, 14:36    [5492478]     Ответить | Цитировать Сообщить модератору
 Re: Циклы и IF'ы в Oracle по сравнению с MS SQL  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
pkarklin
автор
А вы сейчас кому отвечаете? Если мне, то я не спрашивал предназначены ли конструкции TransactSQL для написания запросов.


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

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


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

А слово ЛЮБЫЕ вы решили проигнорировать.

SergSuper
по-моему демагогией занимаетесь
Согласен. Но начал это, на мой взгляд, MasterZiv утверждая, что в Oracle два языка, в то время как MSSQL - один. Если не заниматься буквоедством, то и в Oracle и в MSSQL есть два множества синтаксических конструкций - одно для написания запросов (собственно SQL) и второе - процедурное расширение. Естественно, есть некоторые технические различия в реализации. Ну а какое из этих множеств языком называть - это уже вопрос к марктологам.
2 апр 08, 14:59    [5492708]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить