日期:2014-05-17  浏览次数:20778 次

还是变量的问题。。
SQL code

/*------------------------
declare  @tblName varchar(255)   -- 表名 

declare  @SortfldName varchar(255)  -- 排序字段名 

declare  @oldId int -- 需要移动的ID

declare  @newId int -- 需要移动对比的ID

/***************************/
set @oldId=10
set @tblName='dbo.Mgc_ProjectIntroduce'
/***************************/
select  top 1 @newId= ProjectIntroduce_ID from @tblName
where ProjectIntroduce_Sort  >10
order by ProjectIntroduce_Sort asc

print @oldId
print @newId


------------------------*/
消息 1087,级别 15,状态 2,第 13 行
必须声明表变量 "@tblName"。




------解决方案--------------------
SQL code

--像表,列作為變量時,要用動態拼結後執行
declare @oldId int,@tblName nvarchar(100)
set @oldId=10
set @tblName='dbo.Mgc_ProjectIntroduce'
declare @sql nvarchar(1000)
/***************************/
select @sql=N'select  top 1 @newId= ProjectIntroduce_ID from '+@tblName+N' where ProjectIntroduce_Sort  >10
order by ProjectIntroduce_Sort asc'
exec sp_executesql @sql,N'@newId int output',@newId output
print @oldId
print @newId

------解决方案--------------------
探讨
SQL code

/*------------------------
declare @tblName varchar(255) -- 表名

declare @SortfldName varchar(255) -- 排序字段名

declare @oldId int -- 需要移动的ID

declare @newId int -- 需要移动对比的ID

/*******……

------解决方案--------------------
探讨
SQL code

--像表,列作為變量時,要用動態拼結後執行
declare @oldId int,@tblName nvarchar(100)
set @oldId=10
set @tblName='dbo.Mgc_ProjectIntroduce'
declare @sql nvarchar(1000)
/***************************/
select……

------解决方案--------------------
把注释的部分放出来就好了!