powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Order By в declare CURSOR FOR
8 сообщений из 8, страница 1 из 1
Order By в declare CURSOR FOR
    #39634737
PSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давно не занимался разработкой под MS SQL (последний раз работал аж MS SQL 2000) Нужно сделать простой тригер который должен раскладывать данные о движениях в целевые таблицы.

Раньше я делал это при помощи тригера:


Код: sql
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.
CREATE TRIGGER dbo.income 
   ON  dbo.ev
   AFTER  INSERT,UPDATE
AS 
BEGIN
	SET NOCOUNT ON;

declare curs_srs CURSOR FOR 
(select src.[ID1C]
     -- ,src.[ID1C_EV]
      --,src.[EV_TYPE]
      ,src.[DOC1CNUUM]
      ,src.[ID1C_ITEMTYPE]
      ,src.[ITEMTYPE]
      ,src.[MANUFNUM]
      ,src.[ID1C_VENDOR]
      ,src.[ID1C_VENDOR_EV]
      ,src.[VENDOR_DOCID]
      ,src.[VENDOR_DOCNUM]
      ,src.[ID1C_VENDOR_SA]
      ,src.[VENDOR_SA_DOCID]
      ,src.[VENDOR_SA_DOCNUM]
      ,src.[VENDOR_DT]
      ,src.[ID1C_VENDOR_ORG]
      ,src.[VENDOR_ORGID]  from inserted as src  order by ev_datetime )
OPEN curs_srs



Сейчас на попробовал реализовать это на Microsoft SQL Server 2016 (SP1-CU4)
Получаю "Msg 156, Level 15, State 1, Line 30
Incorrect syntax near the keyword 'order'.
"
При чем начал копать наткнулся в BOL что теперь и сортированные View делать нельзя.

Мне критично что бы в курсоре события выстроились в хронологическом порядке.
Есть какое то более элегантное решение чем переложить inserted в временную таблицу с кластерным индексом( и то не уверен можно ли присобачить к временной таблице кластерный индекс) и селектить от туда ?
...
Рейтинг: 0 / 0
Order By в declare CURSOR FOR
    #39634739
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PSD, скобки убериТе
...
Рейтинг: 0 / 0
Order By в declare CURSOR FOR
    #39634740
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если cte ?
...
Рейтинг: 0 / 0
Order By в declare CURSOR FOR
    #39634742
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=)
синтаксис же
...
Рейтинг: 0 / 0
Order By в declare CURSOR FOR
    #39634755
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PSD,

про синтаксис написали.

но, курсор в триггере?? и это "простейшее"?может можно без него все таки?
...
Рейтинг: 0 / 0
Order By в declare CURSOR FOR
    #39634759
PSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда тупанул, видимо руки без практики потихоньку сползли нуже чем нужно....
Вот так то почему то работало

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
declare curs_srs CURSOR FOR 
(select src.[ID1C]
     -- ,src.[ID1C_EV]
      --,src.[EV_TYPE]
      ,src.[DOC1CNUUM]
      ,src.[ID1C_ITEMTYPE]
      ,src.[ITEMTYPE]
      ,src.[MANUFNUM]
      ,src.[ID1C_VENDOR]
      ,src.[ID1C_VENDOR_EV]
      ,src.[VENDOR_DOCID]
      ,src.[VENDOR_DOCNUM]
      ,src.[ID1C_VENDOR_SA]
      ,src.[VENDOR_SA_DOCID]
      ,src.[VENDOR_SA_DOCNUM]
      ,src.[VENDOR_DT]
      ,src.[ID1C_VENDOR_ORG]
      ,src.[VENDOR_ORGID]  from inserted as src  )
...
Рейтинг: 0 / 0
Order By в declare CURSOR FOR
    #39634770
PSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarikNavyPSD,

про синтаксис написали.

но, курсор в триггере?? и это "простейшее"?может можно без него все таки?

Самому не очень нравится.

В эту таблицу шина скидывает события, мне нужно каждую строку обрабатывать отдельно и в зависимости от данных складывать в разные поля и разные таблицы... При этом кроме всего прочего в если одном пакете оказались 2 события по одному объекту мне их нужно последовательно к этому объекту применить.
Есть какое то более красивое решение чем курсор для данной задачи?
К счастью это не целевое решение, а временный костыль чтобы подготовить данные для заливки в систему принятия решений
...
Рейтинг: 0 / 0
Order By в declare CURSOR FOR
    #39634827
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PSDЕсть какое то более красивое решение чем курсор для данной задачи?Ну как, очевидно, insert/update/delete из inserted

Другое дело, что если какой то код уже накарябан, и он устраивает, то можно и оставить, если это временное решение.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Order By в declare CURSOR FOR
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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