摘取部分存储过程代码如下:~~~
declare
@strMinID as int,
@strSql as varchar(2000)中间已经获取到@strMinID的值为负数,想在此基础上生成有序记录set @strSql='select IDENTITY(INT,'+@strMinID+',-1) as id,name from d_tmp'上面的语句执行出错,为什么?哪位专家解释一下.
declare
@strMinID as int,
@strSql as varchar(2000)中间已经获取到@strMinID的值为负数,想在此基础上生成有序记录set @strSql='select IDENTITY(INT,'+@strMinID+',-1) as id,name from d_tmp'上面的语句执行出错,为什么?哪位专家解释一下.
下面的这句
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' 问题是上面的语句在解析的时候会提示转换出错
set @strSql='select IDENTITY(INT,@strMinID,-1) as id,name into #tmpid from d_tmp'
set @strSql=REPLACE(@strSql,'@strMinID',@strMinID)改为这个试试...
改成这样吧,安全点
create table #tmpid(id int identity(@strMinID,1),name)
set @strSql = ' insert into #tmpid select name from d_tmp '
是不是应该这样写,注意此时使用的是全局临时表!
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
select identity(int,1,1) as id .... into 表名 ....
set @strSql='select IDENTITY(INT,'+cast(@strMinID as varchar(100)+',-1) as id,name into #tmpid from d_tmp'