日期:2014-05-19  浏览次数:20459 次

为什么创建表时用临时变量就不行!
我的sql语句如下,总是说在Id   int   IDENTITY(@cnt,1),   @cnt附近有错误,如果将@cnt换成常量就好了。请各位大虾指教....
declare   @cnt   int(4)
set   @cnt   =   IDENT_CURRENT( 'mytable ')+1
create   table   #t(
      Id   int   IDENTITY(@cnt,1),
      Name     varchar(50),
      Type   int
)

------解决方案--------------------
Id int IDENTITY(@cnt,1), --- 不支持用变量的
------解决方案--------------------
可以考虑这样整:
先创建表然后用动态SQL修改表结构


create table #t(
Name varchar(50),
Type int
)

declare @c int

select @c = 5

declare @sqlstr nvarchar(1000)

select @sqlstr = 'alter table #t add Id int IDENTITY( '+ cast(@c as nvarchar(10)) + ',1) '

exec sp_executesql @sqlstr
------解决方案--------------------
将你所有的逻辑,做在一个EXEC( ' ')里好了。
------解决方案--------------------
如果你用 #t 创建动态临时表等你创建好这个表也就跟着消失了

create table #t

如果用全局的还可以

create table ##t