这行得通,但我想删除冗余。有没有一种方法可以将更新与单个select语句合并,因此我不必使用vars?
DECLARE @OrgAddress1 varchar, @OrgAddress2 varchar, @OrgCity varchar, @OrgState varchar, @OrgZip varchar, @DestAddress1 varchar, @DestAddress2 varchar, @DestCity varchar, @DestState varchar, @DestZip varchar SELECT @OrgAddress1 = OrgAddress, @OrgAddress2 = OrgAddress2, @OrgCity = OrgCity, @OrgState = OrgState, @OrgZip = OrgZip, @DestAddress1 = DestAddress, @DestAddress2 = DestAddress2, @DestCity = DestCity, @DestState = DestState, @DestZip = DestZip FROM ProfilerTest.dbo.BookingDetails WHERE MyID=@MyID UPDATE SHIPMENT SET OrgAddress1 = @OrgAddress1, OrgAddress2 = @OrgAddress2, OrgCity = @OrgCity, OrgState = @OrgState, OrgZip = @OrgZip, DestAddress1 = @DestAddress1, DestAddress2 = @DestAddress2, DestCity = @DestCity, DestState = @DestState, DestZip = @DestZip WHERE MyID2=@ MyID2
这样的事情应该可以工作(目前无法测试-从内存中进行测试):
UPDATE SHIPMENT SET OrgAddress1 = BD.OrgAddress1, OrgAddress2 = BD.OrgAddress2, OrgCity = BD.OrgCity, OrgState = BD.OrgState, OrgZip = BD.OrgZip, DestAddress1 = BD.DestAddress1, DestAddress2 = BD.DestAddress2, DestCity = BD.DestCity, DestState = BD.DestState, DestZip = BD.DestZip FROM BookingDetails BD WHERE SHIPMENT.MyID2 = @MyID2 AND BD.MyID = @MyID
有帮助吗?