首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

MSSQL Update中使用变量解决思路

2012-04-04 
MSSQL Update中使用变量SQL codedeclare @Row nvarchar(255)declare @i intselect @iCOUNT(*)from SRV_Ro

MSSQL Update中使用变量

SQL code
declare @Row nvarchar(255)declare @i intselect @i=COUNT(*)from SRV_Rowwhile(@i>0)beginselect @Row=name from SRV_Row where SRV_RowID=@iupdate SRV_SUB set @Row='yes'whereSRV_PART_NO in (select distinct w.SRV_PART_NO from SRV_SUB s inner join ['WINDOWS 7 32$'] w on s.SRV_PART_NO=w.SRV_PART_NO where SUB_PH_NUMBER_AND_DESCRIPTION=@Row)select @Rowset @i=@i-1end在这里,我在update的使用,使用了set与@row变量,我的本意是将列名为@row的列的值改为yes.但是在这里,则变成了每循环一次,将@row的值变成了yes.求解决方法


[解决办法]
exec('update SRV_SUB set'+ @Row_'='yes''
[解决办法]
exec('update SRV_SUB set'+ @Row_+'='+quotename('yes',''''))
[解决办法]
用动态执行函数exec()
SQL code
declare @Row nvarchar(255)declare @sql text(8000)declare @i intselect @i=COUNT(*)from SRV_Rowwhile(@i>0)beginselect @Row=name from SRV_Row where SRV_RowID=@i@sql ='update SRV_SUB set @Row='yes'whereSRV_PART_NO in (select distinct w.SRV_PART_NO from SRV_SUB s inner join ['WINDOWS 7 32$'] w on s.SRV_PART_NO=w.SRV_PART_NO where SUB_PH_NUMBER_AND_DESCRIPTION=@Row)'exec(@sql)select @Rowset @i=@i-1end
[解决办法]
设置一个字符串变量,拼接SQL执行语句,然后动态执行,exec OR sp_executesql
[解决办法]
SQL code
declare @Row nvarchar(255)declare @sql text(8000)declare @i intselect @i=COUNT(*)from SRV_Rowwhile(@i>0)beginselect @Row=name from SRV_Row where SRV_RowID=@i@sql ='update SRV_SUB set'+ @Row +' ='yes'whereSRV_PART_NO in (select distinct w.SRV_PART_NO from SRV_SUB s inner join ['WINDOWS 7 32$'] w on s.SRV_PART_NO=w.SRV_PART_NO where SUB_PH_NUMBER_AND_DESCRIPTION=@Row)'exec(@sql)select @Rowset @i=@i-1end
[解决办法]
SQL code
declare @Row nvarchar(255)declare @sql text(8000)declare @i intselect @i=COUNT(*)from SRV_Rowwhile(@i>0)beginselect @Row=name from SRV_Row where SRV_RowID=@i@sql ='update SRV_SUB set'+ @Row +' =''yes''whereSRV_PART_NO in (select distinct w.SRV_PART_NO from SRV_SUB s inner join [''WINDOWS 7 32$''] w on s.SRV_PART_NO=w.SRV_PART_NO where SUB_PH_NUMBER_AND_DESCRIPTION=@Row)'exec(@sql)select @Rowset @i=@i-1end
[解决办法]
SQL code
exec('update SRV_SUB set'+ @Row+'='+quotename('yes','''')+'whereSRV_PART_NO in (select distinct w.SRV_PART_NO from SRV_SUB s inner join ['+quotename('WINDOWS 7 32$','''')+'] w on s.SRV_PART_NO=w.SRV_PART_NO where SUB_PH_NUMBER_AND_DESCRIPTION='+@Row+')'
[解决办法]
SQL code
'update SRV_SUB set '+ @Row+'='+quotename('yes','''')+' where '+'SRV_PART_NO in (select distinct w.SRV_PART_NO from SRV_SUB s inner join ['+quotename('WINDOWS 7 32$','''')+'] w on s.SRV_PART_NO=w.SRV_PART_NO where SUB_PH_NUMBER_AND_DESCRIPTION='+@Row+')' 

热点排行