powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / За что так любят MS MSQL
25 сообщений из 202, страница 3 из 9
За что так любят MS MSQL
    #35908972
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper, ok, впредь постараюсь держаться в рамках.

lockyОднако функционал "открыть/пофетчить/закрыть" вряд ли можно назвать "покрывающим все возможности, предоставляемыме временными таблицами".
Нет, я описал что такое курсор в PL\SQL, по сути больше чем "открыть/пофетчить/закрыть" больше ничего полезного сделать нельзя.
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35908994
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ApexНет, я описал что такое курсор в PL\SQL, по сути больше чем "открыть/пофетчить/закрыть" больше ничего полезного сделать нельзя.
Точно моя мысль.
С другой стороны, в оракле курсоры хоть передавать можно в качестве параметров в другие процедуры - и то хлеб....
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909021
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyС другой стороны, в оракле курсоры хоть передавать можно в качестве параметров в другие процедуры - и то хлеб....
не только в оракле
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909024
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорlockyС другой стороны, в оракле курсоры хоть передавать можно в качестве параметров в другие процедуры - и то хлеб....
не только в оракле
Насчет других - не знаю.
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909041
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyНасчет других - не знаю.

Ай, яй, яй... В MS SQL тоже можно...
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909042
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотел было упомянуть MSSQL, но вовремя остановился ))
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909070
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдорхотел было упомянуть MSSQL, но вовремя остановился ))

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
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)
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909099
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видимо я как-то неправильно понял слова "Тип данных cursor можно использовать только в качестве выходного параметра"
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909112
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
FETCH NEXT FROM @Cur
WHILE @@fetch_status =  0  BEGIN
  FETCH NEXT FROM @Cur
END
ну вобщем-то надо признать уродский синтаксис с курсорами у MS, хвастаться тут нечем
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909113
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдорвидимо я как-то неправильно понял слова "Тип данных 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 нет чисто выходных параметров, есть входные и входные\выходные. Так что это можно относить к одной из многих недокументированных возможностей.
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909115
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperну вобщем-то надо признать уродский синтаксис с курсорами у MS, хвастаться тут нечем

Это компенсируется редким использованием курсоров.
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909116
ддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lockyдддддА курсоры использовать религия не позволяет?

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

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

можно редактировать таблицу, из которой выбран курсор, а сам курсор - нередактируется.
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909123
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дддддможно редактировать таблицу, из которой выбран курсор, а сам курсор - нередактируется.

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

1. Создал временную таблицу.
2. Вставил в нее одну выборку
3. Вставил в нее другую.
4. Проапдейтил чевось.
5. Лишнее поудалял.
6. Вернул результат.
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909140
ддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
курсор перемножает значения 2-х полей из разный таблиц (t2, t3) и уладывает результат в поле table1.field1
вместо того, чтобы вытащить данные во временную таблицу, проапдейтить ее, и уложить в результирующую таблицу


Код: plaintext
1.
2.
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
;
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909143
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
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...
Ура мистическим ошибкам во время выполнения...
Зато можно гордо поставить ещё одну галочку в таблицу сомнительных фич...

(...что сейчас начнётся...)
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909160
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дддддкурсор перемножает значения 2-х полей из разный таблиц (t2, t3) и уладывает результат в поле table1.field1
вместо того, чтобы вытащить данные во временную таблицу, проапдейтить ее, и уложить в результирующую таблицу

Мне не надо укладывать результат в физическую таблицу бд. Мне надо обработав в ней данные вернуть результат клиенту.
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909167
дддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklinдддддкурсор перемножает значения 2-х полей из разный таблиц (t2, t3) и уладывает результат в поле table1.field1
вместо того, чтобы вытащить данные во временную таблицу, проапдейтить ее, и уложить в результирующую таблицу

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

Так это же еще проще.
даже кусор в таком случае не нужен.
Сделать расчеты результирующих поле запроса можно в самом запросе...
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909175
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ддддддТак это же еще проще.
даже кусор в таком случае не нужен.
Сделать расчеты результирующих поле запроса можно в самом запросе...

М.б. внимательно перечитаете те несколько операций, которые я проделываю с временной таблицей и предложите вариант с заменой его одним запросом. Под "обработав" понимается чуть боьше, чем "расчеты результирующих поле запроса".
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909183
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТ.к. процедура понятия не имеет о типе курсора, то и сделать ничего осмысленного она с ним не может. Точнее - не гарантирует, что сможет.
Ещё один превед от бестипового VB...
Ура мистическим ошибкам во время выполнения...
Зато можно гордо поставить ещё одну галочку в таблицу сомнительных фич...


Бесусловно, тоже самое можно сказать в адрес Oracle с его нетипизированными рефкурсорами. ;)
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909184
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladУра мистическим ошибкам во время выполнения...
Зато можно гордо поставить ещё одну галочку в таблицу сомнительных фич...
(...что сейчас начнётся...)

Долой сис_рефы?
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909196
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, если посмотреть на мысль о "пагубном наследии", нельзя не отметить, что масса, ну буквально все! (ну, известные мне) субд страдают от отсутствия строгого контроля за чем бы то ни было. И это таки да, приносит приятные сюрпризы.

-------------------------
There’s no silver bullet!
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909249
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper
Код: plaintext
1.
2.
3.
FETCH NEXT FROM @Cur
WHILE @@fetch_status =  0  BEGIN
  FETCH NEXT FROM @Cur
END
ну вобщем-то надо признать уродский синтаксис с курсорами у MS, хвастаться тут нечем
надеюсь, мы не будем обсуждать связь возможностей с синтаксисом.
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909254
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорSergSuper
Код: plaintext
1.
2.
3.
FETCH NEXT FROM @Cur
WHILE @@fetch_status =  0  BEGIN
  FETCH NEXT FROM @Cur
END
ну вобщем-то надо признать уродский синтаксис с курсорами у MS, хвастаться тут нечем
надеюсь, мы не будем обсуждать связь возможностей с синтаксисом.
да это я так, крик души
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909559
Фотография In_Wait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper
Код: plaintext
1.
2.
3.
FETCH NEXT FROM @Cur
WHILE @@fetch_status =  0  BEGIN
  FETCH NEXT FROM @Cur
END
ну вобщем-то надо признать уродский синтаксис с курсорами у MS, хвастаться тут нечем

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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;

чего в оракловском то такого суперского нашел?
...
Рейтинг: 0 / 0
За что так любят MS MSQL
    #35909772
дддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklinддддддТак это же еще проще.
даже кусор в таком случае не нужен.
Сделать расчеты результирующих поле запроса можно в самом запросе...

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

Выполнял я проект для одной известной в Москве компании, по переводу базы с MS SQL на Oracle.
Могу с уверенностью сказать, некотороые "сложные" процедуры, которые разработчики не мыслили себе без использования временных таблиц, я заменял процедурами в оракле, состоящими из одного запроса.
...
Рейтинг: 0 / 0
25 сообщений из 202, страница 3 из 9
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / За что так любят MS MSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]