Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 7 8 9 10 11 [12] 13 14 15 16 .. 23   вперед  Ctrl
 Re: MSSQL или Oracle  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
softwarer

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

а вот в mssql - можно!
(см. пример)
26 янв 07, 16:30    [3700487]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
SergSuper
вот способ и не нравится
но вот вы(оракловцы) в функции сделали pipe row(i) - у всё, добраться до этой записи из функции у вас возможности нет
а "мы" вставляем записи как в таблицу и может работать с нами как с таблицей


А мне не нравятся временные таблицы :( 1:1 ?
На Oracle обычно стараются решить задачу одним SQL-запросом и надобность "подправить" то что уже отдано возникает редко. Вапрочем, временных таблиц никто не отменял.

Мне кажется беседа ушла из конструктивного русла, все устали
Со своей стороны беру мораторий до понедельника
26 янв 07, 16:31    [3700508]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
мастер утешать
Или потому, что "серверные курсоры" - какая-то "священная корова" Oracle, от которой нельзя отказаться в других серверах БД...
(в т.н. "мире MS-SQL-Server" давно известна "любовь" разработчиков к серверным курсорам).


Не надо грязи. В Oracle курсором является ЛЮБОЙ запрос, объявили вы его как cursor или нет, медленее (в отличие от MS SQL) он работать не станет
26 янв 07, 16:35    [3700555]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
SergSuper
а вот в mssql - можно!
(см. пример)


Я уже сказал, временных таблиц в Oracle никто не отменял, так что ТОЖЕ МОЖНО.
Непонятно правда зачем
26 янв 07, 16:37    [3700570]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
мастер утешать
Может быть я не так "въехал в тему", но - почему вы считаете возврат resultset-а (или множества resultset-ов) из хранимой процедуры в качестве "естественной реакции" на SELECT ... (или множества SELECT-ов) в теле этой процедуры "не самым удачным подходом"?

Об этом было сказано в той ссылке, которую я привел по просьбе pkarklin. Позднее я упомянул об этом и здесь, в этом топике.

мастер утешать
Только потому, что "DBGridу нужен набор, поддерживающий закладки"?
Так вашими же словами можно и ответить - "ну и в задницу этот DBGrid,

Нет, не поэтому. Про закладки, если помните, я вообще не говорил ни слова, это фраза pkarklin. Будь поэтому - согласился бы с "применением моего подхода".

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

мастер утешать
Или потому, что "серверные курсоры" - какая-то "священная корова" Oracle, от которой нельзя отказаться в других серверах БД... (в т.н. "мире MS-SQL-Server" давно известна "любовь" разработчиков к серверным курсорам).

Как Вам сказать... я знаю как факт, что mssql-разработчики часто ругаются словами "серверный курсор" и "клиентский курсор", но как-то не доводилось выяснять, какой реальный физический смысл кроется в этих понятиях. Смутно, я подозреваю, под клиентским курсором имеется в виду "профетчили до конца, отсоединились и забыли".

Насчет любви разработчиков к серверным курсорам - быть может мы не будем дожидаться понедельника, и Вы расскажете, чем плоха эта технология? Из общих соображений, если я правильно понимаю, она плоха возможностью удержания блокировок чтения неопределенно долгое время. Кроме того, периодически есть упоминания о проблемах со скоростью, опять же тут это как-то выясняли, и вроде бы пришли к тому, что это аналогично известной оракловой призказке про "row by row is slow by slow". Что-нибудь еще?
26 янв 07, 16:43    [3700623]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
DimaR
Member

Откуда:
Сообщений: 1570
SergSuper

я имел в виду что на Оракле надо писать несколько чужеродные для SQL присвоения j:=2;k:=, потом выполнять опять же не SQLкоманду записи в поток pipe row(i) (пардон, но не знаю правильных терминов)
на mssql же всё делается родными командами insert


Смысл в том, что функция обработает только те данные которые клиент, выбирет,

и еще, вот тут g и f такие функции, которые принимают параметром курсор
SELECT * FROM TABLE(g(CURSOR(SELECT * FROM TABLE(f(CURSOR(SELECT * FROM tab))))))
в этих функциях можно проводить, аггрегацию данных, или еще какую обработку, передается результат в следующую конвеерную функцию, причем выполнение такой функции может ораклом распаралеливаться
26 янв 07, 16:52    [3700704]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
SergSuper
а вот в mssql - можно!
(см. пример)

Я не очень понимаю Ваш смайлик. В примере неконвеерная функция, поэтому и "можно". В Oracle можно написать ее точный аналог.

Ну а раз уж так - как написать именно конвеерную табличную функцию в MSSQL?
26 янв 07, 17:02    [3700786]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
softwarer
SergSuper
а вот в mssql - можно!
(см. пример)

Я не очень понимаю Ваш смайлик. В примере неконвеерная функция, поэтому и "можно". В Oracle можно написать ее точный аналог.

Ну а раз уж так - как написать именно конвеерную табличную функцию в MSSQL?

а чем конвеерная функция отличается от обычной? я подозреваю что нельзя поскольку можно писать только как было продемонстрировано
26 янв 07, 17:46    [3701101]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
SergSuper
а чем конвеерная функция отличается от обычной?

сказано здесь.

SergSuper
я подозреваю что нельзя поскольку можно писать только как было продемонстрировано

Ээ... пардон, а Вы это читали?.
26 янв 07, 18:11    [3701247]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
softwarer
SergSuper
а чем конвеерная функция отличается от обычной?

сказано здесь.

SergSuper
я подозреваю что нельзя поскольку можно писать только как было продемонстрировано

Ээ... пардон, а Вы это читали?.

Я не понял в чем разница между ссылками.

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

Есть еще inline функции - это нечто view с параметром. Типа такого:
CREATE FUNCTION sn(@n int)
RETURNS TABLE 
AS
  RETURN SELECT   * from TBL where id=@n
По вызову они не отличаются от обычных табличных, но при выполнении они потрошаться оптимизатором. И вот в них действительно нельзя вставлять результат несколько раз.

Хотелось бы посмотреть пример оракловкой табличной и конвейерной табличной функции
26 янв 07, 19:03    [3701483]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
DimaR
Member

Откуда:
Сообщений: 1570
SergSuper
Насчет конвеерных функций. Тоже мне непонятно чем это отличается от того что делается в mssql - я же тоже могу вставлять результат как порциями, так и по строчке и сколько угодно раз.

Смысл в том, что например, конвеерная функция может вернуть набор значений из 1000 000 записей, а я выбираю из нее только 100, на клиента или например запросом select * from table(f()) where rownum<=100

то в функции обработается только 100 записей, а для табличной (и как я понял в mssql) прийдется сначала заполнить структуру 1000 0000 значений, а только потом они отфильтруются в запросе.

и как я уже писал, при некоторых условиях (если параметр функции курсор), то можно указать ораклу, что он может распаралелить выполнение такой функции.
26 янв 07, 19:13    [3701533]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
DimaR
SergSuper
Насчет конвеерных функций. Тоже мне непонятно чем это отличается от того что делается в mssql - я же тоже могу вставлять результат как порциями, так и по строчке и сколько угодно раз.

Смысл в том, что например, конвеерная функция может вернуть набор значений из 1000 000 записей, а я выбираю из нее только 100, на клиента или например запросом select * from table(f()) where rownum<=100

то в функции обработается только 100 записей, а для табличной (и как я понял в mssql) прийдется сначала заполнить структуру 1000 0000 значений, а только потом они отфильтруются в запросе.

и как я уже писал, при некоторых условиях (если параметр функции курсор), то можно указать ораклу, что он может распаралелить выполнение такой функции.

та функция по выдаче простых чисел - она конвеерная? если да - то получается когда набор достигнет заданного значения - выполнение прервётся? можно задавать только количество выбираемых записей? т.е. можно ли задать как-то так: rownum between 10 and 100?
26 янв 07, 19:24    [3701587]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
SergSuper
Я не понял в чем разница между ссылками.

А кто сказал, что между ними должна быть разница?

SergSuper
Насчет конвеерных функций. Тоже мне непонятно чем это отличается от того что делается в mssql - я же тоже могу вставлять результат как порциями, так и по строчке и сколько угодно раз.

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

insert into SomeTable select * from table ( SomeFunction )

В случае если SomeFunction - "обычная" табличная функция, как в MSSQL, выполнение будет идти следующим образом: вычислили большой-большой результат функции, начали делать insert. Если SomeFunction - табличная функция, существует возможность распараллелить ее, то есть функция вычисляет "вторую порцию данных", в это же самое время "первая порция данных" уже вставляется в таблицу.

Дальше начинаются тонкости различных режимов. Конвеерная функция может параллелиться (то есть обсчитываться частями на разных процессорах), выход конвеерной функции может быть входом другой конвеерной функции, оптимизатор вовсе не обязан вычислять выборку до конца.

SergSuper
Хотелось бы посмотреть пример оракловкой табличной и конвейерной табличной функции

Cкажем

create type TIntTable as table of integer ;

create function Seq1 ( N integer ) return TIntTable pipelined as
begin
  for i in 1..N loop pipe row ( i ) ; end loop ;
  return ;
end ;
/

create function Seq2 ( N integer ) return TIntTable as
  result TIntTable := TIntTable() ;
begin
  result.extend ( N ) ;
  for i in 1..N loop result ( i ) := i ; end loop ;
  return result ;
end ;
/

При этом если выполнить

select * from table ( SeqX ( 1000000000 )) ;

то без конвеера придется довольно долго ждать результата.
26 янв 07, 19:42    [3701663]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Приветствую всех. Надеюсь, все хорошо отдохнули.

softwarer
Пардон, раскрою мысль. Итак, есть два способа сделать нечто. Один из них обладает некоторым объективным достоинством. Другим все пользуются. В такой ситуации выбор идет из двух основных вариантов:
недостатки первого метода более существенны, нежели это достоинство
"Все" настолько идиоты, что по привычке или в силу других причин не используют лучший метод.


IMHO, в контексте обсуждения, не совсем кооректно говорить о достоинстве одного способа и недостатка другого. Перейдем к конкретике.

1. MS SQL позволяет вернуть набор данных из хп инструкцией SELECT так же, как если бы эта инструкция выполнялась не в хранимой процедуре.
2. MS SQL позволяет вернуть курсор из хранимой процедуры через выходной параметр.

Сказать какой из этих двух методов по меньшей мере будет некорректно, ибо у них два совершенно разных предназначения:

1 вариант расчитан на set ориентированную обработку вне зависимости возвращает ли хранимая процедура набор на клиента в ответ на соответсвующий вызов (EXEC ProcName) или по результатам работы такой хранимой процедуры заполняется таблица (INSERT ... EXEC ProcName) как постоянная так и временная.
2 вариант используется для реализации навигационного подхода, когда для каждой записи в курсоре, переданном из хп, например, есть необходимость вызвать другую хп, принимающие значения из записи курсора в виде скалярных параметров.

softwarer
Правильно ли я понимаю, что дописать поддержку требуемой функциональности будет нетривиальной задачей? Если так, ответ на первый вопрос отчасти проясняется.


Несовсем понятно, зачем мне надо что-то дописывать к варианту 2, если можно использовать вариант 1 ничего не дописывая?!
29 янв 07, 10:53    [3705890]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
изначально вы говорили "Причем tempdb используется по минимому (не путать с опцией ALLOW_SNAPSHOT_ISOLATION для поддержки уровня изоляции SNAPSHOT).", а это не так. с точки зрения i/o на tempdb никакой разницы нет, все блокировочные транзакции обязаны плодить версии и нагружать tempdb.


Есть, ибо при READ_COMMITTED_SNAPSHOT версионность поддерживается по-статементно, а не по-транзакционно, как при ALLOW_SNAPSHOT_ISOLATION. Т.о. как только инструкция (в первом случаи) отработает версии записей удаляться из tempdb, а во втором случаи они будут висеть до конца транзакции.
29 янв 07, 11:10    [3705990]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Yo.!
изначально вы говорили "Причем tempdb используется по минимому (не путать с опцией ALLOW_SNAPSHOT_ISOLATION для поддержки уровня изоляции SNAPSHOT).", а это не так. с точки зрения i/o на tempdb никакой разницы нет, все блокировочные транзакции обязаны плодить версии и нагружать tempdb.


Есть, ибо при READ_COMMITTED_SNAPSHOT версионность поддерживается по-статементно, а не по-транзакционно, как при ALLOW_SNAPSHOT_ISOLATION. Т.о. как только инструкция (в первом случаи) отработает версии записей удаляться из tempdb, а во втором случаи они будут висеть до конца транзакции.


Yo говорит об общем объеме i/o на обеспечение версионности, он не изменится.
Требования к tempdb будут ниже разумеется, и будут меньше затраты на консистентные чтения других сессий, которым занадобятся именно эти строки
29 янв 07, 11:19    [3706047]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Yo.!
Guest
pkarklin


Есть, ибо при READ_COMMITTED_SNAPSHOT версионность поддерживается по-статементно, а не по-транзакционно, как при ALLOW_SNAPSHOT_ISOLATION. Т.о. как только инструкция (в первом случаи) отработает версии записей удаляться из tempdb, а во втором случаи они будут висеть до конца транзакции.


да какая разница до конца не до конца ? i/o от этого не меняется .... ну разве что чуток меньше читать будут, если в транзакцих было несколько стейтментов которые читают одни и теже данные.
29 янв 07, 11:24    [3706081]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
pkarklin
IMHO, в контексте обсуждения, не совсем кооректно говорить о достоинстве одного способа и недостатка другого. Перейдем к конкретике.
......
Сказать какой из этих двух методов по меньшей мере будет некорректно, ибо у них два совершенно разных предназначения:

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

Далее, я понимаю, что Вам удобно склонить к различию предназначений, но вспомните пожалуйста https://www.sql.ru/forum/actualthread.aspx?bid=10&tid=377674&pg=11#3699545 из которого мы стартовали эту часть беседы. Там Вы сказали, что второй способ можно использовать для того же, для чего и ref cursor в Oracle, а именно для передачи данных на клиента или в другую ХП. Если Вы не отказываетесь от тех слов - давайте эту постановку и обсуждать.

Возвращаясь к нашим баранам. Мы сравниваем Oracle с MSSQL? Сравниваем. В Oracle есть средства для решения указанной Вами в "предназначении" задаче? Есть. Они обладают недостатком MSSQL-способа, о котором Вы сожалеете? Нет, не обладают. Итого: совершенно незачем стенать об отсутсвии mssqllike-способа в Oracle.

То, почему в MSSQL не используется oraclelike способ - интересно мне с точки зрения "любопытства вообще". Тем не менее, во избежание флейма я в принципе готов смирить свое любопытство.

pkarklin
Несовсем понятно, зачем мне надо что-то дописывать к варианту 2, если можно использовать вариант 1 ничего не дописывая?!

Не надо переходить на личности, я Вас не убеждаю что-то дописывать. Напоминаю, если Вы забыли за выходные: У нас есть два способа. Один с известным недостатком, другим никто не пользуется. Я пытаюсь выяснить, какие недостатки есть у второго. Вы назвали - плохая поддержка со стороны ADO. Я пытаюсь выяснить, насколько легко преодолеть этот недостаток.
29 янв 07, 12:37    [3706667]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
softwarer
Павел, я не "не хочу слышать", а "хочу услышать что-то логичное".

Вы упорно высказываете сожаление на тему "Oracle не умеет".


Александр, я где-то сказал, что Oracle что-то "не умеет"?!

pkarklin
Меня лично не устраивает отсутствие в Oracle вернуть из хп набор данных.


Возвращение курсора и возвращение набора данных, в моем понимании, это все-таки разные вещи. Возможно, что это "понимание" сложилось из-за многолетней работы только с MS SQL. Возможно, что работа с курсором, возвращаемым из хп в Oracle так же легка и прозрачна (что для клиентского, что для серверного кода) как и с набором, возвращаемым из хп в MS SQL и это всего лишь by design различия между серверами. Хотя (на счет) прозрачности вспоминается удивление, которое вызывают у специалистов по Oracle на предмет хранимых процедур, содержащих только один SELECT. М.б. не так все уж и просто с ref-курсорами?!

Давайте сравним. В MS SQL можно получить набор данных запросом с клиента. Можно этот же запрос завернуть в хп и получить этот же набор. Причем сервером будт использованы одни и теже механизмы, за исключением того, что в первом случаи будет передаваться инструкция с клиента, во втором будет задействован механизм RPC. Мне не совсем понятно, о каких недостатках Вы говорите:

pkarklin
Однако, у этого способа есть очевидный недостаток по сравнению с имеющимся в Oracle. В связи с этим я пытаюсь выяснить: а что в этом способе хорошего, лучшего?


Какой недостаток? С какими имеющимся? Я не зря привел текст хп, в которой что-то считается и затем результат возвращается с клиента. Это набор инструкций я мог и с клиента послать. Работа бы сервер отличалась в маленькой части деталей. Я всего-навсего констатировал факт того, что такая же прозрачная конструкция, как возвращение результата их хп SELECTом в Oracle отсутствует. С моей точки зрения ref-курсор менее прозрачная (понятная) конструкция. Я соглашусь, опять же, что это by design, и, даже, готов услышать, что в Oracle хп не предназначены для этого. Но все равно, мне странно осознавать различность поведения "просто запроса с клиента" и "этого же запроса в теле хп".


pkarklin
Единственный аргумент, который от Вас прозвучал - "повсеместно применим при работе с MSSQL".


Это действительно так - set-ориентированный подход, вместо навигационного.

pkarklin
С моей точки зрения, это крайне слабый аргумент даже сам по себе, хотя для облегчения миграции с MSSQL на Oracle может быть и стоило бы сделать


Имеено то, что в Oracle "это не сделано" меня и не устроило. М.б. для Вас это и не является "сильным аргументом", для меня он таковым является.

softwarer
Пока что опять-таки получен один аргумент: ADO иначе не умеет.


Хм... Я рассказал, как можно использовать в MS SQL некий аналог ref-курсоров в Oracle. Вы спросили - можно ли такой способ использовать при работе с колмпонентом, требующим наличия закладок. Я сказал нет. Но ни коим образом не может являться недостатком описанного способа, ибо ни это есть его место применения.

softwarer
Напомню, в этой теме мы ставим "плюсы" и "минусы". Пока что я не вижу оснований ставить минус ораклу и/или плюс мсскл-ю за наличие упомянутой Вами фичи. Если смотреть именно с позиций плюсов-минусов, пока видим ситуацию "у Oracle есть единственный способ, лишенный недостатков" против "у MSSQL есть два способа, каждый с собственным недостатком".


Спасибо, с памятью у меня все в порядке. Я все-таки "-" Oracle поставлю. Именно за ту неоднозначость в поведении инструций в теле хп и вне ее. У этой фичи есть один большой плюс - ее прозрачность, т.е. переход от прямых запросов с клиента к хп не вызывает изменения в подходах к работе. Насколько, я понимаю, в Oracle это не так. И, мне кажеться, именно по этому среди разработчиков на Oracle так распространены запросы с клиентов.

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


Вы немного извратили то, что я спрашивал. Повторюсь еще раз. Для чего было в Oracle было сделано различие между поведением запроса с клиента и этого же запроса в хп?
29 янв 07, 13:01    [3706872]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Я все-таки "-" Oracle поставлю. Именно за ту неоднозначость в поведении инструций в теле хп и вне ее. У этой фичи есть один большой плюс - ее прозрачность, т.е. переход от прямых запросов с клиента к хп не вызывает изменения в подходах к работе.


Не стоит, очень субъективная оценка.
Мне например дико видеть ХП состоящую просто из одного или НЕСКОЛЬКИХ совершенно разных select-ов. IMHO особенности менталитета.

Напоминаю, в Oracle ЛЮБОЙ запрос есть КУРСОР, вне зависимости от того как он оформлен
29 янв 07, 13:17    [3706986]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Для чего было в Oracle было сделано различие между поведением запроса с клиента и этого же запроса в хп?


Некорректная постановка вопроса. В Oracle никогда не задавались целью добиться того, чтобы клиентский select можно было без всяких изменений перенести в ХП
29 янв 07, 13:19    [3707009]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gluk (Kazan)
pkarklin
Для чего было в Oracle было сделано различие между поведением запроса с клиента и этого же запроса в хп?


Некорректная постановка вопроса. В Oracle никогда не задавались целью добиться того, чтобы клиентский select можно было без всяких изменений перенести в ХП


Хп... Напомнинает "в Oracle этого нет, ибо это не нужно". ;)

Gluk (Kazan)
Не стоит, очень субъективная оценка.


Возможно. Особенно с точки зрения человека, использующего MS SQL. Однако, прозрачность конструкций языка, IMHO, вещь более-менее объективная.

Gluk (Kazan)
]Напоминаю, в Oracle ЛЮБОЙ запрос есть КУРСОР, вне зависимости от того как он оформлен


Спасибо, конечно. Но в MS SQL резалтсет и курсор - это две большие разницы.
29 янв 07, 13:22    [3707041]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gluk (Kazan)
pkarklin
Для чего было в Oracle было сделано различие между поведением запроса с клиента и этого же запроса в хп?


Некорректная постановка вопроса. В Oracle никогда не задавались целью добиться того, чтобы клиентский select можно было без всяких изменений перенести в ХП


pkarklin
Я соглашусь, опять же, что это by design, и, даже, готов услышать, что в Oracle хп не предназначены для этого.


Хотя все-равно, мне не понятно, зачем "накручивать" дополнительный механизм?!
29 янв 07, 13:24    [3707064]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Хотя все-равно, мне не понятно, зачем "накручивать" дополнительный механизм?!


Его не накручивали. И Oracle и MS SQL имеют достаточно продуманные концепции. Эти концепции сильно различаются. Это касается и прозрачности языка, то что прозрачно для меня не будет таковым для Вас и наоборот. Некоторые концепции противоположной стороны вполне в состоянии вызвать культурный шок. Вы судите со своей колокольни, только и всего. Это не повод ставить ОБЪЕКТИВНЫЙ минус Oracle.
29 янв 07, 13:34    [3707158]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
Ну если уж быть точными, то ADO умеет принимать в качестве параметра ref-cursor Оракла и работать с ним, как обычным result-set, правда есть какие-то ограничения (сейчас уже не вспомню). В инете есть статьи, позволяющие понять, как это сделать.

В то же время, меня, например, раздражает то, что процедура не может вернуть несколько result-set'ов. - дело привычки, подхода

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

Так что... есть плюсы, есть минусы.
29 янв 07, 13:42    [3707249]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 7 8 9 10 11 [12] 13 14 15 16 .. 23   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить