EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 0,当前计数 = 1。 怎么结局,求大神解答!!
ALTER PROCEDURE [dbo].[pro_outstore666]
(
@rpcode VARCHAR(20) ,
@cad VARCHAR(20),
@saleaddress VARCHAR(100) ,
@od VARCHAR(20) ,--出库日期
@WHCode VARCHAR(20) ,--仓库编码
@QTY INT ,--数量
@spmark INT , --标示
@tssm VARCHAR(500) , --特殊说明
@opcode VARCHAR(20) ,
--@ShGoogcode VARCHAR(20),
@batchnum VARCHAR(20) ,
@batchcout INT
)
AS /*****************************************/
DECLARE @iErrorCount INT,@TranCount INT;
SET @iErrorCount = @@TranCount;
IF @iErrorCount > 0
SAVE TRANSACTION ProcedureSave
ELSE
BEGIN TRAN Tran_out;
/****************************************/
DECLARE @storeID INT ,
@outID INT;
SELECT @storeID = id
FROM dbo.BaseStore
WHERE Basecode = @WHCode;
BEGIN
IF EXISTS ( SELECT TOP 1
1
FROM dbo.stock_storck
WHERE stockID = @storeID
AND stockNum >= @QTY
AND rpcode = @rpcode )
BEGIN
UPDATE dbo.stock_storck
SET stockNum = stockNum - @QTY ,
datechange = GETDATE()
WHERE rpcode = @rpcode
AND stockID = @storeID;
SET @iErrorCount = @iErrorCount + @@error;
INSERT INTO dbo.outproduct
( rpcode ,
OD ,
WHcode ,
QTY ,
spmark ,
TSNote ,
usercode ,
WH ,
statustype ,
INbatch ,
batchCount ,
CAD,
saleaddress
)
VALUES ( @rpcode ,
@od ,
@WHCode ,
@QTY ,
@spmark ,
@tssm ,
@opcode ,
@storeID ,
'直接出库' ,
@batchnum ,
@batchcout,
@cad,
@saleaddress
);
SET @iErrorCount = @iErrorCount + @@error;
SET @outID = @@identity; --入库明细id
INSERT INTO dbo.sys_storelog
( log_name ,
outID ,
logtype ,-- 0 表示入 1表示出库
storenum ,
storeID ,
storeWh ,
isdel ,
log_datetime ,
log_opname ,
rpcode
)
VALUES ( '直接出库' ,
@outID ,
1 ,
@QTY ,
@storeID ,
@WHCode ,
0 ,
GETDATE() ,
@opcode ,
@rpcode
);
SET @iErrorCount = @iErrorCount + @@error;
IF @iErrorCount = 0
BEGIN
COMMIT TRAN Tran_out;
END;
ELSE
BEGIN
ROLLBACK TRAN Tran_out;
END;
END;
END;