Sql写法(事物+游标) 收藏
<script type="text/javascript"></script> <script type="text/javascript"></script>
--
当两个或两以上的操作要么都执行,要么都执行时要用事务。
1
. Sql写法(事物
+
游标)

--
开始事务
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

--
取得客户号
select
@CusNo
=
CusNo
from
CRMPSProjectM
where
ProjNo
=
@ProjNo

--
得到CRMPSContact中某专案号对应的客户号
update
CRMPSContact
set
CusNo
=
@CusNo
where
ProjNo
=
@ProjNo

--
执行错误回滚
if
@@error
!=
0
begin
rollback
tran
return
end

--
移动游标,其它所有行更新操作(当到结尾时退出)
WHILE
@@FETCH_STATUS
=
0
BEGIN
--
游标移到下一行
FETCH
NEXT
FROM
CRMPSContact_cursor
INTO
@ProjNo

--
取得客户号
select
@CusNo
=
CusNo
from
CRMPSProjectM
where
ProjNo
=
@ProjNo

--
得到CRMPSContact中某专案号对应的客户号
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












































































