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

Откуда: там и тут
Сообщений: 949
DROP FUNCTION seq_ments_nextval

CREATE FUNCTION seq_ments_nextval()
RETURNS int
AS
BEGIN
DECLARE @ResultVar as int
SET @ResultVar =(SELECT value from sequences where name ='ments')
--->EXEC increment_seq_value 'MENTS';
RETURN @ResultVar
END
GO

DROP PROCEDURE increment_seq_value

CREATE PROCEDURE increment_seq_value(@seq_name varchar(100))
AS
BEGIN
UPDATE sequences set value = value + 1 where name = @seq_name
END
GO

create table sequences
(name varchar(250), value int)
insert into sequences values ('ments', 0)

select dbo.seq_ments_nextval()
Msg 557, Level 16, State 2, Line 1
Only functions and extended stored procedures can be executed from within a function.


как разрулить выполнение процедуры внутри функции?
24 июн 11, 23:42    [10873408]     Ответить | Цитировать Сообщить модератору
 Re: подскажите. вопрос банальный  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Robb
как разрулить выполнение процедуры внутри функции?
Никак.
24 июн 11, 23:42    [10873410]     Ответить | Цитировать Сообщить модератору
 Re: подскажите. вопрос банальный  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
Гавриленко Сергей Алексеевич,

надо как-то сиквенсы реализовать.. чтоб меньше модификаций sql кода.
можно идентити попробовать, но в коде надо сначала получать новый ID сиквенс а потом делать транзакцию.
что-то в голову ничего вечером не приходит

хочется что такое select nextval или insert into.. values (nextval...)
короче иммитация оракловских тем.
конвертирую приложение для сиквела.

если есть что-то безо всяких openquery и т.п. дайте знать.
25 июн 11, 00:37    [10873643]     Ответить | Цитировать Сообщить модератору
 Re: подскажите. вопрос банальный  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
можно ли как-то процедуру с output value встроить в SQL запрос?
25 июн 11, 00:39    [10873659]     Ответить | Цитировать Сообщить модератору
 Re: подскажите. вопрос банальный  [new]
Robb
Member

Откуда: там и тут
Сообщений: 949
короче сделал так

create function seq_ments_nextval()
returns int
as
begin
declare @id int
set @id = (select max(id) from ments)
if @id is null set @id = 1
set @id = @id + 1
return @id
end

select dbo.seq_ments_nextval()


и так на каждую таблицу :))
25 июн 11, 01:07    [10873798]     Ответить | Цитировать Сообщить модератору
 Re: подскажите. вопрос банальный  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Robb
короче сделал так
Ну, когда ваши сиквенсы начнут дупы давать в многопользовательской среде, приходите опять.
25 июн 11, 01:42    [10873882]     Ответить | Цитировать Сообщить модератору
 Re: подскажите. вопрос банальный  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
https://www.sql.ru/forum/actualthread.aspx?tid=701408&hl=sequence
25 июн 11, 01:42    [10873884]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить