Sql 如何在存储过程中使用while循环更新表?
我想在while循环中更新我的动态表 这是我的密码:Sql 如何在存储过程中使用while循环更新表?,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我想在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// S
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
While(@j您不能在where子句中设置Id,因为Id是整数值,您正在将其与字符串(varchar)连接起来。
因此,首先必须将其转换为(String)varchar,然后才能使用where子句
比如:
Set@q_updateTable='Update'+quotename(@tablename)+'Set'+@columnname+'='''+@fourthcolumn+'',其中ID='+转换(varchar,@tmp_ID)+''
Exec sp_executesql@q_updateTable
您必须使用“convert(varchar,@tmp_ID)”而不是“@tmp_ID”您不能在where子句中设置ID,因为ID是整数值,您正在将其与字符串(varchar)连接。
因此,首先必须将其转换为(String)varchar,然后才能使用where子句
比如:
Set@q_updateTable='Update'+quotename(@tablename)+'Set'+@columnname+'='''+@fourthcolumn+'',其中ID='+转换(varchar,@tmp_ID)+''
Exec sp_executesql@q_updateTable
您必须使用“convert(varchar,@tmp_ID)”而不是“@tmp_ID”这些变量中有什么?你能添加它吗?什么是@tmp\u ID
的数据类型?为什么你想让while循环这样做?@Kannan,因为我必须更新每一行。你对此有更好的想法吗?看看你的其他问题,我也认为这可以用纯基于集合的逻辑来完成。你正在尝试使用过程语言thinki来使用SQLng.此解决方案不会随着数据集的增长而扩展。SQL在集合上工作,并根据条件将转换应用于集合的每个元素。您不能像过程语言那样处理它。您可以,但不应该……花时间学习语言这些变量中有什么?您可以添加它吗?@tmp\u ID
?为什么要while loop执行此操作?@Kannan,因为我必须更新每一行。你对此有更好的想法吗?看看你的其他问题,我也认为这可以通过纯基于集合的逻辑来完成。你试图使用过程语言思维来使用SQL。此解决方案不会随着数据集的增长而扩展。SQL在集合上工作并应用于Trans根据条件对集合中的每个元素进行sforms。你不能像过程语言那样处理它。你可以,但你不应该……花时间学习语言