b******r 发帖数: 1106 | 1 I have a stored procedure
ALTER PROC mysp
@ID int,
@CID int,
@Status varchar(10) = NULL
AS
UPDATE mytable
SET CID=@CID, Status = @Status,
WHERE ID = @ID
declare @ClosureFlag char(1)
set @ClosureFlag = '0'
if @Status = '2'
begin
--update myothertable
delete from myanothertable where CID = @CID
INSERT INTO mythirdtable (CID, 'something deleted')
VALUES (@CID, @message)
-- set the flag for C# code use
set @ClosureFlag = '1'
end
select @ClosureFlag as ClosureFlag
Most time it r | aw 发帖数: 127 | 2 My understanding is that this entire stored procedure is run within a batch so
it should beheave like running in a transaction, if there is any error
updating myothertable and mythirdtable, it should rollback.
这个ASSUMPTION不对,SP就是一堆SQL,你在里面不指定TRANSACTION,它不会给你自动的
。象你这种又是UPDATE又是DELETE,前后还相关的,每步应该查错,如果有,叫它ROLL
BACK。
so
【在 b******r 的大作中提到】 : I have a stored procedure : ALTER PROC mysp : @ID int, : @CID int, : @Status varchar(10) = NULL : AS : UPDATE mytable : SET CID=@CID, Status = @Status, : WHERE ID = @ID : declare @ClosureFlag char(1)
|
|