游标实现。 类似例子:--*************************************************************** -- <summary>由于需求变更,联系人控件加了一列(客户联系人/专案联系人), -- 需要对客户以前的客户进行历史数据更新,以下是更新脚本 --</summary> -- <para=name>King.Zheng</name> -- <para=date>2005/7/8</date> --***************************************************************--开始事务 BEGIN TRAN--不显示计数信息 SET NOCOUNT ON DECLARE @ProjNo varchar(50),@CusNo varchar(50)--声明游标 DECLARE CRMPSContact_cursor CURSOR FOR SELECT ProjNo FROM CRMPSContact WHERE ProjNo>0--打开游标 OPEN CRMPSContact_cursor--取第一行的值给专案变量: @ProjNo FETCH NEXT FROM CRMPSContact_cursor INTO @ProjNo--执行错误回滚 if @@error!=0 begin rollback tran return end--移动游标,其它所有行更新操作(当到结尾时退出) WHILE @@FETCH_STATUS = 0 BEGIN --游标移到下一行 FETCH NEXT FROM CRMPSContact_cursor INTO @ProjNo update CRMPSContact set CusNo = @CusNo where ProjNo = @ProjNo
--执行错误回滚 if @@error!=0 begin rollback tran return end END--提交所有变更 COMMIT TRAN--关闭游标 CLOSE CRMPSContact_cursor--释放游标 DEALLOCATE CRMPSContact_cursor--恢复设置 SET NOCOUNT OFF GO
类似例子:--***************************************************************
-- <summary>由于需求变更,联系人控件加了一列(客户联系人/专案联系人),
-- 需要对客户以前的客户进行历史数据更新,以下是更新脚本
--</summary>
-- <para=name>King.Zheng</name>
-- <para=date>2005/7/8</date>
--***************************************************************--开始事务
BEGIN TRAN--不显示计数信息
SET NOCOUNT ON
DECLARE @ProjNo varchar(50),@CusNo varchar(50)--声明游标
DECLARE CRMPSContact_cursor CURSOR FOR
SELECT ProjNo
FROM CRMPSContact
WHERE ProjNo>0--打开游标
OPEN CRMPSContact_cursor--取第一行的值给专案变量: @ProjNo
FETCH NEXT FROM CRMPSContact_cursor
INTO @ProjNo--执行错误回滚
if @@error!=0
begin
rollback tran
return
end--移动游标,其它所有行更新操作(当到结尾时退出)
WHILE @@FETCH_STATUS = 0
BEGIN
--游标移到下一行
FETCH NEXT FROM CRMPSContact_cursor
INTO @ProjNo
update CRMPSContact
set CusNo = @CusNo
where ProjNo = @ProjNo
--执行错误回滚
if @@error!=0
begin
rollback tran
return
end
END--提交所有变更
COMMIT TRAN--关闭游标
CLOSE CRMPSContact_cursor--释放游标
DEALLOCATE CRMPSContact_cursor--恢复设置
SET NOCOUNT OFF
GO
是应该使用游标去while