Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 [6] 7 8 9 10 .. 17   вперед  Ctrl
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
funikovyuri
С точки зрения остального кода на tsql резалтсет уходит в никуда.


По поводу способа возврата резалтсета из хп у нас уже был здесь спор. Поищите. По сабжу.

Рассмотрим пример:

SELECT
  *
FROM
  authors

и

CREATE PROC TestProc
AS
  SELECT
    *
  FROM
    authors
GO

EXEC TestProc

Почему в первом случаи вы знаете, "куда" уходит резалтсет, а во втором нет?! Раз Вы не указали "вкуда" направлять результат, он будет отправлен на клиента. В отличии от Oracle поведение результата выборки в MS SQL однозначно, будь она AdHoc запросом или запросом в хп.
1 ноя 07, 13:44    [4865098]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
funikovyuri
Member

Откуда: Симферополь
Сообщений: 4045
угу вот есть
CREATE PROC TestProc
AS
  SELECT
    *
  FROM
    authors
GO

EXEC TestProc

и еще есть
CREATE PROC AnotherTestProcThatUsesTestProc
AS
    exec AnotherTestProcThatUsesTestProc

    -- как мне использовать результат работы AnotherTestProcThatUsesTestProc
GO

EXEC AnotherTestProcThatUsesTestProc

PS про "уходит на клиента" это круто
1 ноя 07, 14:04    [4865261]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
funikovyuri
Member

Откуда: Симферополь
Сообщений: 4045
упс, правильный код такой
CREATE PROC AnotherTestProcThatUsesTestProc
AS
    exec ProcThat

    -- как мне использовать результат работы TestProc
GO

EXEC AnotherTestProcThatUsesTestProc
1 ноя 07, 14:07    [4865291]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

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

funikovyuri wrote:
> упс, правильный код такой
insert .... exec?

Posted via ActualForum NNTP Server 1.4

1 ноя 07, 14:11    [4865316]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
funikovyuri
-- как мне использовать результат работы AnotherTestProcThatUsesTestProc


INSERT @TableVar\#TempTable EXEC ...

funikovyuri
PS про "уходит на клиента" это круто


Это действительно "круто", ибо куда еще можно уходить результату SELECT?!
1 ноя 07, 14:13    [4865333]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
funikovyuri
Member

Откуда: Симферополь
Сообщений: 4045
автор
INSERT @TableVar\#TempTable EXEC ...


ну не мне же вас в faq по mssql отсылать
https://www.sql.ru/faq/faq_topic.aspx?fid=416

автор
Недостатки:
# таким образом можно получить только первый набор данных
# невозможно "унаследовать" получение набора. При попытке получить таким образом набор из хранимой процедуры, которая в свою очередь получает набор из другой процедуры insert exec'ом, мы получим ошибку : An INSERT EXEC statement cannot be nested


чтож вы умолчали про эти "фичи"?

автор
Это действительно "круто", ибо куда еще можно уходить результату SELECT?!


будете удивлены, но есть такое свойство как замкнутость, в данном случае имеется в виду что обычно в языке программирования результатом любой операции языка является объект этого языка. В случае TSQL это не так
1 ноя 07, 14:27    [4865444]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

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

funikovyuri wrote:
> будете удивлены, но есть такое свойство как замкнутость, в данном случае
> имеется в виду что обычно в языке программирования результатом любой
> операции языка является объект этого языка. В случае TSQL это не так
В Т-СКЛ и объетов то нету :(
И массивов... и ваще - он как бы не "язык программирования" :(

"как страшно жыть" (С) Р.Литвинова.

Posted via ActualForum NNTP Server 1.4

1 ноя 07, 15:24    [4865880]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

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

funikovyuri wrote:
> чтож вы умолчали про эти "фичи"?

Никто не ставил граничных условий - потому и "умолчали".
Если РЕАЛЬНО надо сделать - можно сделать.

Posted via ActualForum NNTP Server 1.4

1 ноя 07, 15:25    [4865888]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
funikovyuri
ну не мне же вас в faq по mssql отсылать


Действительно, не надо. Я его и так хорошо знаю...

funikovyuri
чтож вы умолчали про эти "фичи"?


Эт не "фичи". Эт "by design". Почему Вас не удивляет то, что в char(1) нельзя вписать более 1го символа? Да и workaround этого "by design" есть.


funikovyuri
будете удивлены, но есть такое свойство как замкнутость, в данном случае имеется в виду что обычно в языке программирования результатом любой операции языка является объект этого языка. В случае TSQL это не так


И каким объектом языка в Oracle будет результат INSERT?

Сообщение было отредактировано: 1 ноя 07, 17:05
1 ноя 07, 15:32    [4865958]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
funikovyuri
автор
INSERT @TableVar\#TempTable EXEC ...


ну не мне же вас в faq по mssql отсылать
https://www.sql.ru/faq/faq_topic.aspx?fid=416

автор
Недостатки:
# таким образом можно получить только первый набор данных
# невозможно "унаследовать" получение набора. При попытке получить таким образом набор из хранимой процедуры, которая в свою очередь получает набор из другой процедуры insert exec'ом, мы получим ошибку : An INSERT EXEC statement cannot be nested


чтож вы умолчали про эти "фичи"?

как-то мелковато для демонстрации сравнения космического корабля с самолетом братьев райт
1 ноя 07, 16:59    [4866571]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
funikovyuri
Member

Откуда: Симферополь
Сообщений: 4045
pkarklin
И каким объектом языка в Oracle будет результат INSERT?

Известно каким - записью в соответствующей таблице. Вы можете получить эту запись с помощью SELECT. А вы как думали?

SergSuper

как-то мелковато для демонстрации сравнения космического корабля с самолетом братьев райт


Ну т.е., я надеюсь, вы согласны что insert/exec это очень ограниченная конструкция и писать универсальный, повторно используемый код на TSQL ситуация с "резалтсетами ушедшими на клиента" только мешает?

тогда можно поговорить про обработку ошибок в MSSQL 2k (с Yukon я не работал), а именно отсутствие исключений и "костыли" в виде SET XACT_ABORT ON? Согласитесь, что писать универсальный код с SET XACT_ABORT ON сложно, а с постоянным анализом кода возврата каждого SQL-выражения долго и неудобно.
1 ноя 07, 17:16    [4866703]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

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

funikovyuri wrote:
> тогда можно поговорить про обработку ошибок в MSSQL 2k (с Yukon я не
> работал), а именно отсутствие исключений и "костыли" в виде SET
> XACT_ABORT ON? Согласитесь, что писать универсальный код с SET
> XACT_ABORT ON сложно, а с постоянным анализом кода возврата каждого
> SQL-выражения долго и неудобно.
насчет "долго и неудобно"- вопрос спорный, дело "самодисциплины" ;)

В принципе, раз мы не касаемся юкона... и катмая...
Поговорим о достоинствах и недостатках Оракл 8?

Как там насчет "how to rollback DDL statements"?

Posted via ActualForum NNTP Server 1.4

1 ноя 07, 17:21    [4866732]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
SergSuper

как-то мелковато для демонстрации сравнения космического корабля с самолетом братьев райт


T-SQL от mssql2k по сравнению с oracle9i/10g действительно так и выглядел, а SQL так вообще как дельтаплан.

2locky

>Как там насчет "how to rollback DDL statements"?

а что у mssql с этим лучше ?
как на счет
# CREATE INDEX
# CREATE XML INDEX
# ALTER INDEX
# ALTER TABLE
# DBCC DBREINDEX
# ALTER PARTITION FUNCTION
# ALTER PARTITION SCHEME
# DROP INDEX

на IL snapshot ;)
1 ноя 07, 17:27    [4866780]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

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

Yo.! wrote:
> на IL snapshot ;)
Я этого не пробовал - значит, мне это не нужно :)

зы не смотрел. Видимо - проблемы?

Posted via ActualForum NNTP Server 1.4

1 ноя 07, 17:28    [4866794]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
Yo.!
Guest
конечно проблемы :)

Msg 3964, Level 16, State 1, Line 1
Transaction failed because this DDL statement is not allowed
inside asnapshot isolation transaction. Since metadata is not
versioned,a metadata change can lead to inconsistency
if mixed within snapshot isolation.

+ будет очень интересно что будет делать МС когда дорастет до статусов t-sql процедур (valid/invalid) ... имхо тут тоже никак.
1 ноя 07, 17:38    [4866850]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
funikovyuri
Известно каким - записью в соответствующей таблице.


С таким же успехом результатом SELECTа будет резалтсет. Не правда ли?

funikovyuri
Вы можете получить эту запись с помощью SELECT. А вы как думали?


Вы можете получить это резалтсет на клиенте. А Вы как думали? В том то и дело, что не стоит натягивать на SQL понятие "замкнутости" и придумывать для INSERT в качестве результата запись в таблице, которая не является ОБЪЕКТОМ ЯЗЫКА!

funikovyuri
тогда можно поговорить про обработку ошибок в MSSQL 2k ... а именно отсутствие исключений...


А что об этом говорить. Их там действительно не было. Разве с этим кто спорит?!

funikovyuri
"костыли" в виде SET XACT_ABORT ON? Согласитесь, что писать универсальный код с SET XACT_ABORT ON сложно,


Гм... Универсальный в моем понимании - это код, в котором ошибка любого рода приводит к полному откату транзакции, что и достигается с помощью SET XACT_ABORT ON. А уж для распределенных транзакций без него вообще никуда.

funikovyuri
а с постоянным анализом кода возврата каждого SQL-выражения долго и неудобно.


Анализ наличия ошибки после каждой инструкции необходим только в случие различной реакции на ошибку для каждой инструкции.

funikovyuri
(с Yukon я не работал),


Ну, и не работая, наверно слышали, про try...catch?
1 ноя 07, 17:47    [4866913]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

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

Yo.! wrote:
> конечно проблемы :)
>
> Msg 3964, Level 16, State 1, Line 1
> Transaction failed because this DDL statement is not allowed
> inside asnapshot isolation transaction. Since metadata is not
> versioned,a metadata change can lead to inconsistency
> if mixed within snapshot isolation.
>
> + будет очень интересно что будет делать МС когда дорастет до статусов
> t-sql процедур (valid/invalid) ... имхо тут тоже никак.

Это, по большому счету, фигня...
А вот автокоммит ДДЛ - он иногда напрягает....

Posted via ActualForum NNTP Server 1.4

1 ноя 07, 17:47    [4866916]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
funikovyuri
Ну т.е., я надеюсь, вы согласны что insert/exec это очень ограниченная конструкция


Мать... Мать... Мать... :) Ну не используйте "ограниченную инструкцию" то? Возвращайте набор через курсор в выходном параметре.

funikovyuri
и писать универсальный, повторно используемый код на TSQL ситуация с "резалтсетами ушедшими на клиента" только мешает?


Если Вы не будете отправлять их на клиента, то и мешать ничего не будет. У каждой хп должно быть назначение. Возвращает данные на клиента - должен быть SELECT. Данные будут обрабатываться на стороне сервера - курсор через параметр или это вообще должна быть НЕ ХП. Вариант с "не ХП" может быть использован и в задаче "возврата" данных на клиента.
1 ноя 07, 17:52    [4866956]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
funikovyuri
Member

Откуда: Симферополь
Сообщений: 4045
locky

В принципе, раз мы не касаемся юкона... и катмая...
Поговорим о достоинствах и недостатках Оракл 8?

Как там насчет "how to rollback DDL statements"?

Т.е. вы считаете что Yukon надо сравнивать с Oracle 9, а не 10?

DDL в Oracle не транзакционны.
1 ноя 07, 17:53    [4866958]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
funikovyuri
Т.е. вы считаете что Yukon надо сравнивать с Oracle 9, а не 10?

DDL в Oracle не транзакционны.


Ага... Так же, как и SERIALIZABLE не SERIALIZABLE.
1 ноя 07, 17:55    [4866970]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
funikovyuri
Member

Откуда: Симферополь
Сообщений: 4045
pkarklin
funikovyuri
Ну т.е., я надеюсь, вы согласны что insert/exec это очень ограниченная конструкция


Мать... Мать... Мать... :) Ну не используйте "ограниченную инструкцию" то? Возвращайте набор через курсор в выходном параметре.

У каждой хп должно быть назначение.


Вы, по-моему, путаете "назначение" и способ использования (контекст использования). Разработчику кода совершенно необязательно (а иногда это и просто невозможно) знать кем этот код будет вызываться.
1 ноя 07, 17:59    [4866991]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
конечно проблемы :)


Господа, ну ей богу.

Сказано - нельзя INSERT ... EXEC ... быть вложенным, нет я все равно буду пытаться это использовать.

Сказано об ограничениях DDL при снапшоте, нет я все равно буду это использовать.

И после этого кричать: "ну ребятя, ну фигня же это". Еще раз спрощу, почему не кричите "фигня", что в char(1) два символа не влазит?
1 ноя 07, 17:59    [4866998]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
funikovyuri
Member

Откуда: Симферополь
Сообщений: 4045
pkarklin
funikovyuri
Т.е. вы считаете что Yukon надо сравнивать с Oracle 9, а не 10?

DDL в Oracle не транзакционны.


Ага... Так же, как и SERIALIZABLE не SERIALIZABLE.


Не позорьтесь, и не начинайте того чего не сможете закончить
1 ноя 07, 18:00    [4867002]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
funikovyuri
pkarklin
funikovyuri
Т.е. вы считаете что Yukon надо сравнивать с Oracle 9, а не 10?

DDL в Oracle не транзакционны.


Ага... Так же, как и SERIALIZABLE не SERIALIZABLE.


Не позорьтесь, и не начинайте того чего не сможете закончить


Я бы посоветовал Вам быть чуть-чуть по-корректней, дабы мне не приходилось Вас посылать в тынц.
1 ноя 07, 18:02    [4867008]     Ответить | Цитировать Сообщить модератору
 Re: Microsoft задавит Oracle  [new]
locky
Member

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

funikovyuri wrote:
> Т.е. вы считаете что Yukon надо сравнивать с Oracle 9, а не 10?
Нет, просто...
Почему бы не вспомнить "предания старины глубокой"?
У нас иногда с семёркой люди появляются...
Зачем брать "то что есть"? Когда всегда можно посмотреть "то что было" -
и то, что уже, ессно, не улучшится ;)

> DDL в Oracle не транзакционны.
Вот это и напрягает...

begin tran
drop table
rollback

- и жоППА....

Posted via ActualForum NNTP Server 1.4

1 ноя 07, 18:04    [4867019]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 [6] 7 8 9 10 .. 17   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить