0

我正在为 SQL Server 2008 R2 编写代码。我有两个包含几十个表的数据库。

一个数据库中的每个表都包含另一个数据库中同名的表。

具有相同名称的表具有相同的格式(字段和数据类型)。两个表的内容相似但不相同。我需要根据对另一个所做的更改来更新一个,但仅在某些情况下。我想我想为此使用光标,但我找不到一个很好的例子。

到目前为止,MSDN 示例一次将一个字段读入一个变量。我确实需要能够读取/修改每个表中相同的两列,但我必须相信,与为每个表的每一列声明变量相比,有些东西不那么乏味。

我希望能够获取整行,检查几列,然后决定是否要在更改两列后将整行写入另一个表 - 但我是否必须为每个字段声明变量我想获取/写入?没有办法只获取整行并写入整行吗?

4

2 回答 2

3

您可以创建一个临时表并在其中插入行,但我认为该MERGE命令非常可配置且快速,在这里应该对您有所帮助。 http://technet.microsoft.com/en-us/library/bb510625.aspx

于 2012-11-19T16:29:26.967 回答
1

你可以

select a.*

但不能

set a.* = b.*

你不需要光标。设置操作应该更好地做到这一点。
但是语法很乏味。
您可以使用 .NET 来构建语法吗?

update a 
set a.col1 = b.col1, a.col2 == b.col12, a.col3 = b.col3 
from table as a
join table as b 
  on a.ID is b.ID 
where a.col1 <> b.col1 or a.col12 <> b.col2
于 2012-11-19T16:51:23.373 回答