Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Order By в declare CURSOR FOR / 8 сообщений из 8, страница 1 из 1
23.04.2018, 13:41
    #39634737
PSD
PSD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Order By в declare CURSOR FOR
Давно не занимался разработкой под 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
23.04.2018, 13:46
    #39634739
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Order By в declare CURSOR FOR
PSD, скобки убериТе
...
Рейтинг: 0 / 0
23.04.2018, 13:46
    #39634740
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Order By в declare CURSOR FOR
а если cte ?
...
Рейтинг: 0 / 0
23.04.2018, 13:46
    #39634742
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Order By в declare CURSOR FOR
=)
синтаксис же
...
Рейтинг: 0 / 0
23.04.2018, 13:58
    #39634755
StarikNavy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Order By в declare CURSOR FOR
PSD,

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

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

Код: 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
23.04.2018, 14:07
    #39634770
PSD
PSD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Order By в declare CURSOR FOR
StarikNavyPSD,

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

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

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

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

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


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