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

Откуда: Made in USSR
Сообщений: 3910
SergSuper, ok, впредь постараюсь держаться в рамках.

locky
Однако функционал "открыть/пофетчить/закрыть" вряд ли можно назвать "покрывающим все возможности, предоставляемыме временными таблицами".

Нет, я описал что такое курсор в PL\SQL, по сути больше чем "открыть/пофетчить/закрыть" больше ничего полезного сделать нельзя.
2 апр 09, 16:50    [7013350]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Apex
Нет, я описал что такое курсор в PL\SQL, по сути больше чем "открыть/пофетчить/закрыть" больше ничего полезного сделать нельзя.

Точно моя мысль.
С другой стороны, в оракле курсоры хоть передавать можно в качестве параметров в другие процедуры - и то хлеб....
2 апр 09, 16:55    [7013403]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
locky
С другой стороны, в оракле курсоры хоть передавать можно в качестве параметров в другие процедуры - и то хлеб....

не только в оракле
2 апр 09, 17:03    [7013473]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Зайцев Фёдор
locky
С другой стороны, в оракле курсоры хоть передавать можно в качестве параметров в другие процедуры - и то хлеб....

не только в оракле

Насчет других - не знаю.
2 апр 09, 17:04    [7013483]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
locky
Насчет других - не знаю.


Ай, яй, яй... В MS SQL тоже можно...
2 апр 09, 17:08    [7013520]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
хотел было упомянуть MSSQL, но вовремя остановился ))
2 апр 09, 17:08    [7013522]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Зайцев Фёдор
хотел было упомянуть MSSQL, но вовремя остановился ))


Отчего же?! Тока всем не рассказывайте:

CREATE PROC Proc1 @Cur CURSOR VARYING OUTPUT
AS
FETCH NEXT FROM @Cur
WHILE @@fetch_status = 0 BEGIN
  FETCH NEXT FROM @Cur
END
GO

DECLARE @Cur CURSOR

SET @Cur = CURSOR FOR SELECT TOP 5 name, object_id FROM sys.objects

OPEN @Cur

EXEC Proc1 @Cur
GO

DROP PROC Proc1

name                                                                                                                             object_id   
-------------------------------------------------------------------------------------------------------------------------------- -----------
sysrowsetcolumns 4

(1 row(s) affected)

name object_id
-------------------------------------------------------------------------------------------------------------------------------- -----------
sysrowsets 5

(1 row(s) affected)

name object_id
-------------------------------------------------------------------------------------------------------------------------------- -----------
sysallocunits 7

(1 row(s) affected)

name object_id
-------------------------------------------------------------------------------------------------------------------------------- -----------
sysfiles1 8

(1 row(s) affected)

name object_id
-------------------------------------------------------------------------------------------------------------------------------- -----------
syshobtcolumns 13

(1 row(s) affected)

2 апр 09, 17:20    [7013604]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
видимо я как-то неправильно понял слова "Тип данных cursor можно использовать только в качестве выходного параметра"
2 апр 09, 17:30    [7013690]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
FETCH NEXT FROM @Cur
WHILE @@fetch_status = 0 BEGIN
  FETCH NEXT FROM @Cur
END
ну вобщем-то надо признать уродский синтаксис с курсорами у MS, хвастаться тут нечем
2 апр 09, 17:35    [7013739]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Зайцев Фёдор
видимо я как-то неправильно понял слова "Тип данных cursor можно использовать только в качестве выходного параметра"


Боюсь, что поняли Вы правильно, ибо дословно в BOL написано следующее:

However, the cursor data type can be used only on OUTPUT parameters. When you specify a cursor data type, the VARYING and OUTPUT keywords must also be specified. You can have multiple output parameters specified with the cursor data type.

Но в MS SQL нет чисто выходных параметров, есть входные и входные\выходные. Так что это можно относить к одной из многих недокументированных возможностей.
2 апр 09, 17:35    [7013740]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
SergSuper
ну вобщем-то надо признать уродский синтаксис с курсорами у MS, хвастаться тут нечем


Это компенсируется редким использованием курсоров.
2 апр 09, 17:36    [7013745]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
ддддд
Guest
locky
ддддд
А курсоры использовать религия не позволяет?

Выбрать массив данных в курсор и на каждом шаге цикла можете выполнять хоть 25 запросов.


я не силён в синтаксисе орацла
там есть такие стейтменты, как insert into cursor, delete from cursor, update cursor, select from cursor?


можно редактировать таблицу, из которой выбран курсор, а сам курсор - нередактируется.
2 апр 09, 17:36    [7013748]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ддддд
можно редактировать таблицу, из которой выбран курсор, а сам курсор - нередактируется.


простите, а зачем мне это надо, если я:

1. Создал временную таблицу.
2. Вставил в нее одну выборку
3. Вставил в нее другую.
4. Проапдейтил чевось.
5. Лишнее поудалял.
6. Вернул результат.
2 апр 09, 17:38    [7013770]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
ддддд
Guest
курсор перемножает значения 2-х полей из разный таблиц (t2, t3) и уладывает результат в поле table1.field1
вместо того, чтобы вытащить данные во временную таблицу, проапдейтить ее, и уложить в результирующую таблицу


for cur in (select t.id, t1.Field1, t2.field2.... from table1 t1,table2 t2,table3 t3 where ....) loop
   update table1 set field1= cur.field2*sur.field3 where table1.id=sur.id;
end loop
;
2 апр 09, 17:46    [7013831]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
hvlad
Member

Откуда:
Сообщений: 11578
pkarklin
CREATE PROC Proc1 @Cur CURSOR VARYING OUTPUT
AS
FETCH NEXT FROM @Cur
WHILE @@fetch_status = 0 BEGIN
  FETCH NEXT FROM @Cur
END
GO

DECLARE @Cur CURSOR

SET @Cur = CURSOR FOR SELECT TOP 5 name, object_id FROM sys.objects

OPEN @Cur

EXEC Proc1 @Cur
GO

DROP PROC Proc1

Т.к. процедура понятия не имеет о типе курсора, то и сделать ничего осмысленного она с ним не может. Точнее - не гарантирует, что сможет.
Ещё один превед от бестипового VB...
Ура мистическим ошибкам во время выполнения...
Зато можно гордо поставить ещё одну галочку в таблицу сомнительных фич...

(...что сейчас начнётся...)
2 апр 09, 17:48    [7013845]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ддддд
курсор перемножает значения 2-х полей из разный таблиц (t2, t3) и уладывает результат в поле table1.field1
вместо того, чтобы вытащить данные во временную таблицу, проапдейтить ее, и уложить в результирующую таблицу


Мне не надо укладывать результат в физическую таблицу бд. Мне надо обработав в ней данные вернуть результат клиенту.
2 апр 09, 17:55    [7013899]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
дддддд
Guest
pkarklin
ддддд
курсор перемножает значения 2-х полей из разный таблиц (t2, t3) и уладывает результат в поле table1.field1
вместо того, чтобы вытащить данные во временную таблицу, проапдейтить ее, и уложить в результирующую таблицу


Мне не надо укладывать результат в физическую таблицу бд. Мне надо обработав в ней данные вернуть результат клиенту.


Так это же еще проще.
даже кусор в таком случае не нужен.
Сделать расчеты результирующих поле запроса можно в самом запросе...
2 апр 09, 17:59    [7013933]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

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


М.б. внимательно перечитаете те несколько операций, которые я проделываю с временной таблицей и предложите вариант с заменой его одним запросом. Под "обработав" понимается чуть боьше, чем "расчеты результирующих поле запроса".
2 апр 09, 18:03    [7013955]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
hvlad
Т.к. процедура понятия не имеет о типе курсора, то и сделать ничего осмысленного она с ним не может. Точнее - не гарантирует, что сможет.
Ещё один превед от бестипового VB...
Ура мистическим ошибкам во время выполнения...
Зато можно гордо поставить ещё одну галочку в таблицу сомнительных фич...


Бесусловно, тоже самое можно сказать в адрес Oracle с его нетипизированными рефкурсорами. ;)
2 апр 09, 18:07    [7013974]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
hvlad
Ура мистическим ошибкам во время выполнения...
Зато можно гордо поставить ещё одну галочку в таблицу сомнительных фич...
(...что сейчас начнётся...)


Долой сис_рефы?
2 апр 09, 18:07    [7013980]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Хотя, если посмотреть на мысль о "пагубном наследии", нельзя не отметить, что масса, ну буквально все! (ну, известные мне) субд страдают от отсутствия строгого контроля за чем бы то ни было. И это таки да, приносит приятные сюрпризы.

-------------------------
There’s no silver bullet!
2 апр 09, 18:12    [7014005]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
SergSuper
FETCH NEXT FROM @Cur
WHILE @@fetch_status = 0 BEGIN
  FETCH NEXT FROM @Cur
END
ну вобщем-то надо признать уродский синтаксис с курсорами у MS, хвастаться тут нечем

надеюсь, мы не будем обсуждать связь возможностей с синтаксисом.
2 апр 09, 18:35    [7014115]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Зайцев Фёдор
SergSuper
FETCH NEXT FROM @Cur
WHILE @@fetch_status = 0 BEGIN
  FETCH NEXT FROM @Cur
END
ну вобщем-то надо признать уродский синтаксис с курсорами у MS, хвастаться тут нечем

надеюсь, мы не будем обсуждать связь возможностей с синтаксисом.

да это я так, крик души
2 апр 09, 18:38    [7014126]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
In_Wait
Member [заблокирован]

Откуда: When your words mean nothing, I go la la la
Сообщений: 20581
SergSuper
FETCH NEXT FROM @Cur
WHILE @@fetch_status = 0 BEGIN
  FETCH NEXT FROM @Cur
END
ну вобщем-то надо признать уродский синтаксис с курсорами у MS, хвастаться тут нечем


он ни чем от оракловского вообще то не отличается

CURSOR cur 
IS
SELECT a
FROM b WHERE 
BEGIN

OPEN cur ;
LOOP
EXIT WHEN cur%NOTFOUND;
FETCH cur
INTO row;
END LOOP;
CLOSE z_cur;

чего в оракловском то такого суперского нашел?
2 апр 09, 23:46    [7014871]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
дддддд
Guest
pkarklin
дддддд
Так это же еще проще.
даже кусор в таком случае не нужен.
Сделать расчеты результирующих поле запроса можно в самом запросе...


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


Выполнял я проект для одной известной в Москве компании, по переводу базы с MS SQL на Oracle.
Могу с уверенностью сказать, некотороые "сложные" процедуры, которые разработчики не мыслили себе без использования временных таблиц, я заменял процедурами в оракле, состоящими из одного запроса.
3 апр 09, 08:56    [7015388]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6 7 8 9   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить