摘取部分存储过程代码如下:~~~
declare 
   @strMinID as int,
   @strSql as varchar(2000)中间已经获取到@strMinID的值为负数,想在此基础上生成有序记录set @strSql='select IDENTITY(INT,'+@strMinID+',-1) as id,name from d_tmp'上面的语句执行出错,为什么?哪位专家解释一下.

解决方案 »

  1.   

    查询不能直接生成IDENTITY把它生成插入一个临时表里,再从临时表中查询
      

  2.   

    select identity(int,1,1) as id .... into newtable from ....
      

  3.   

    不好意思没解释清楚
    下面的这句
    set @strSql='select IDENTITY(INT,'+@strMinID+',-1) as id,name from d_tmp' 
    实际为set @strSql='select IDENTITY(INT,'+@strMinID+',-1) as id,name into #tmpid from d_tmp' 问题是上面的语句在解析的时候会提示转换出错
      

  4.   


    set @strSql='select IDENTITY(INT,@strMinID,-1) as id,name into #tmpid from d_tmp' 
    set @strSql=REPLACE(@strSql,'@strMinID',@strMinID)改为这个试试...
      

  5.   


    改成这样吧,安全点
    create table #tmpid(id int identity(@strMinID,1),name)
    set @strSql = ' insert into #tmpid select name from d_tmp '
      

  6.   


    是不是应该这样写,注意此时使用的是全局临时表!
    declare @strSql nvarchar(max),@strMinID int
    set @strSql='select IDENTITY(INT,'+cast(@strMinID as nvarchar(256))+',-1) as id,name into ##tmpid from d_tmp' 
    exec(@strSql)
    select * from ##tmpid
      

  7.   


    select identity(int,1,1) as id .... into 表名 ....
      

  8.   


    set @strSql='select IDENTITY(INT,'+cast(@strMinID as varchar(100)+',-1) as id,name into #tmpid from d_tmp'
      

  9.   

    好象都不对阿,各位有没有在SQL中试试阿?