Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Использование последовательностей в ms sql 2014, в функции  [new]
Григорий Поверенный
Member

Откуда:
Сообщений: 114
Добрый день!

В общем то проблема такова.

Задача простая, получать новое значение в функциях и тд.

Раньше для последовательностей использовал clr процедуру.

С какой то версии, по моему с 2012 появились встроенные последовательности, и появились новые костыли...

В функции использование NEXT VALUE FOR запрещено.

Сделал процедуру, в которой использую NEXT VALUE FOR.

Сделал функцию, которая вызывает эту процедуру и возвращает новое значение.

При вызове этой функции ошибка - "Внутри функции можно вызывать только функции и некоторые расширенные хранимые процедуры."

Кто встречался с такой задачкой?
18 авг 14, 16:29    [16457504]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
Glory
Member

Откуда:
Сообщений: 104751
Григорий Поверенный
Кто встречался с такой задачкой?

С задачей или ошибкой ?
18 авг 14, 16:33    [16457527]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
Григорий Поверенный
Member

Откуда:
Сообщений: 114
Glory,

С ошибкой и задачкой:-)
18 авг 14, 16:39    [16457580]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
Glory
Member

Откуда:
Сообщений: 104751
Григорий Поверенный
Glory,

С ошибкой и задачкой:-)

Ошибка в игнорировании хелпа, где описан разрешенный синтаксис функций
"Внутри функции можно вызывать только функции и некоторые расширенные хранимые процедуры."

Задача ваша - непонятна. Зачем для извлечения значения последовательности нужна функция или процедура ?
18 авг 14, 16:48    [16457646]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4893
А чем вас не устраивает старый добрый IDENTITY ?
18 авг 14, 16:51    [16457675]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
Григорий Поверенный
Member

Откуда:
Сообщений: 114
Glory,

"Зачем для извлечения значения последовательности нужна функция или процедура"

Есть система, которая изначальна писалась по Oracle.

В общем привычка осталась. Уже всё переведено на MS SQL и работает, есть только проблема в скорости массовой вставки в таблицы. Думал задействовать новую супер возможность... ан нет.
18 авг 14, 16:57    [16457716]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
Glory
Member

Откуда:
Сообщений: 104751
Григорий Поверенный
есть только проблема в скорости массовой вставки в таблицы. Думал задействовать новую супер возможность... ан нет.

Проблема скорости вставки решается запуском дополнительной процедуры/функции ???
Это что-то новое
18 авг 14, 17:00    [16457744]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
Григорий Поверенный
Member

Откуда:
Сообщений: 114
Glory,

Я спорить, и указывать на недостатки MS SQL не буду. У Вас есть конкретные предложения по теме или как?

Задача простая, вернуть значение последовательности из функции. Усё.
18 авг 14, 17:07    [16457784]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
а зачем из ф-ии то? вы парадигму plsql программирования из оракла сюда тащите, но тут так не выйдет. надо продумать архитектуру решения сначала в рамках возможностей ms sql server
18 авг 14, 17:09    [16457796]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
Glory
Member

Откуда:
Сообщений: 104751
Григорий Поверенный
У Вас есть конкретные предложения по теме или как?

В смысле ?
Прочитать в хелпе про разрешенный в функциях синтаксис ?
Или угадать про "проблема в скорости массовой вставки в таблицы" ?
18 авг 14, 17:10    [16457804]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
Григорий Поверенный
Member

Откуда:
Сообщений: 114
Konst_One,
автор
но тут так не выйдет

Это я уже понял:-)

Ладно, будем переделывать.

Что делать, разные системы...
18 авг 14, 17:13    [16457840]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
Glory
Member

Откуда:
Сообщений: 104751
Григорий Поверенный
Ладно, будем переделывать.

Может надо начать с выяснения причин "проблема в скорости массовой вставки в таблицы" ?
Вы думаете, что сможете создать что-то быстрее identity и bulk insert ?
18 авг 14, 17:15    [16457851]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
Григорий Поверенный
Member

Откуда:
Сообщений: 114
Glory,

Я просто думал что последовательностью можно будет воспользоваться так же как в oracle. И всё.
18 авг 14, 17:19    [16457883]     Ответить | Цитировать Сообщить модератору
 Re: Использование последовательностей в ms sql 2014, в функции  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4893
Григорий Поверенный
Glory,

Я просто думал что последовательностью можно будет воспользоваться так же как в oracle. И всё.


Как человек, который имел дело и с MS SQL и c Oracle, могу сказать, что писать надо так, кок это принято на данной конкретной БД, как оптимально для неё. Если вам надо перейти на MS SQL, то отставляйте свои "ORACLE несомненно лучше MS SQL" и смотрите как правильно писать под MS SQL. Почитайте Тома Кайта, в конце концов, может он вас убедит.
18 авг 14, 18:44    [16458442]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить