我想在while循环中更新动态表。
这是我的代码:
While (@j<=@tmp_getRowCount)
Begin
Set @firstcolumn = (Select SplitFirst_tblAR from @result_AR Where rownumber = @j) //String//
Set @secondcolumn = (Select EMail_tblAR from @result_AR Where rownumber = @j) //String//
Set @thirdcolumn = (Select SplitFirst_tblKul from @result_AR Where rownumber = @j) //String//
Set @fourthcolumn = (Select EMail_tblKul from @result_AR Where rownumber = @j) //String//
insert into @test Values(@tmp_ID, @firstcolumn,@secondcolumn,@thirdcolumn,@fourthcolumn)
if ((@firstcolumn = @thirdcolumn) AND (@secondcolumn != @fourthcolumn) AND (@firstcolumn != ''))
begin
Set @q_updateTable = 'Update '+ quotename(@tablename) +' Set '+@columnname+' = ''' + @fourthcolumn + ''' Where ID = ' + @tmp_ID + ''
Exec sp_executesql @q_updateTable
end
SET @j = @j+1
End
我的result_AR表:
我知道错误在这里:
ID ='+ @tmp_ID +''
当我将此Where子句更改为
时'+ @ columnname +'='''+ @secondcolumn +''''
代码正常工作。
为什么我不能将ID设置为where where子句?我得到ID值为整数。 错误是“查询已完成但有错误”。 提前谢谢。
答案 0 :(得分:3)
你不能在where子句中设置Id,因为id是整数值,你用string(varchar)连接它。 首先,你必须在(String)varchar中转换它,你可以使用where子句。
喜欢:
设置@q_updateTable ='更新'+'allame(@tablename)+'设置'+ @ columnname +'='''+ @fourthcolumn +'''其中ID ='+ convert(varchar,@ tmp_ID)+'' exec sp_executesql @q_updateTable
你必须使用“@tmp_ID”的“convert(varchar,@ tmp_ID)”