好的,请记住,虽然我已经构建并使用Access数据库,但对于SQL Server来说我还是比较新的,但我总是使用DAO与它们交互以创建一个循环很容易 - 佩奇。SQL服务器 - 一次更新表中的一条记录
这里就是我试图做的,没有成功至今:
1)我需要从历史/转换表的数据更新主动态表。 [SendToTbl]表用作数据库中其余数据表的主键。历史/转换表 - [SelectFromTbl]具有[SendToTbl]表中所有项目的历史记录。这基本上是多对一的关系。
2)的[SelectFromTbl]每行是日期时间戳更新一个,所以...... [SendToTbl] ID#1可能有6条在[SelectFromTbl]需要在一个要移动一个时间。
我以为我可以做这个光标 - (是的,我读过多篇文章,有些人认为它是邪恶的) - 但由于它是一次性脚本,不会用于我认为使用游标的弊端得到缓解。
当我运行我的剧本,我的结果窗口显示光标是通过[SelectFromTbl]移动成功。好极了!
这是不更新的[SendToTbl]记录如预期。哎呀!
我一直在殴打我的头靠在墙上试图让这个工作,也许这是我正在寻找的方式,但我没有找到答案。 [SelectFromTbl]有超过30万条记录,需要一次加载一个 - 按日期按特定顺序....
这是怎么回事我用数据更新其他表?我真的可以在这里使用一些帮助来解决这个问题。
这里是我的公版
declare
@MainID int
, @myNumber int
, @myAmt decimal(25,2)
, @myName varchar(100)
DECLARE tCusor CURSOR
LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR SELECT [Main]
, [myNumber]
, [myAmount]
, [myName]
FROM [dbo].[SelectFromTbl]
open tCusor
fetch next from tCusor
into @MainID, @myNumber, @myAmt, @myName
while (@@FETCH_STATUS = 0)
begin
UPDATE [dbo].[SendToTbl]
SET [MainNum] = @myNumber
, [MainAmt] = @myAmt
, [MainName] = @MyName
WHERE [MainID] = @MainID
fetch next from tCusor
end
close tCusor
deallocate tCusor
GO
在你的第二次读取(循环内部)中,你需要'into @ ...'吗? – TZHX