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

Откуда:
Сообщений: 275
Здрасти!

мне нужно чтоб индтификатгор начал с переменной (просто неизвестно с какой цифры начать)
поэтоу попробовал следюущую запись

а выдает ошибку :
Server: Msg 170, Level 15, State 1, Line 8
Line 8: Incorrect syntax near '@t'.


САМ пример КОДа:

declare @T int

set @t = 10


declare @source table
(
Z int identity(@t, 1),
p varchar(10)
)

insert into @source
select 'test1'
insert into @source
select 'test2'
insert into @source
select 'test3'
insert into @source
select 'test4'
insert into @source
select 'test5'

select * from @source
9 окт 09, 15:43    [7765814]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Identity (перем, 1)  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", RESEED, 30);
GO
9 окт 09, 15:45    [7765830]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Identity (перем, 1)  [new]
talich2005
Member

Откуда:
Сообщений: 275
что-то совсем не понятно, можно коментарии пожалуста
9 окт 09, 15:51    [7765867]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Identity (перем, 1)  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
declare @T int
set @T = 10

declare @source table(Z int identity(1, 1), p varchar(10))
insert into @source select 'test1'
insert into @source select 'test2'
--...

select Z + @t as Z_needed, p from @source

Z_needed    p
----------- ----------
11          test1
12          test2

(2 row(s) affected)
9 окт 09, 15:55    [7765907]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Identity (перем, 1)  [new]
talich2005
Member

Откуда:
Сообщений: 275
Спасибо! Паганель


почему я сам сразу не догодался
9 окт 09, 18:20    [7766808]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Identity (перем, 1)  [new]
SanSYS
Member

Откуда: http://www.sansys.net/
Сообщений: 1879
не называйте мну психом, имхо - боян :)

вот еще альтернативное "решение":
declare @T int
set @T = 11

DECLARE @sql nvarchar(max) = REPLACE('declare @source table(Z int identity(@T, 1), p varchar(10))', '@T', @T) + 
'insert into @source select ''test1''' + 
'insert into @source select ''test2''' + 
'SELECT * FROM @source';

EXEC sp_executesql @sql

результат:

11 test1
12 test2


(1 row(s) affected)

(1 row(s) affected)

(2 row(s) affected)


думаю комменты не требуются, кто может предложить вариант "круче"? :)

мой блог
10 окт 09, 01:00    [7768159]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить