如何在存程中据
我希望把所有的都在存程中在其中行出是用一OUTPUT量回信息(如下例中的@errorMsg)但是我行是在第一INSERT句就出异常根本不行其后的 IF(@@ERROR !=0)判是哪里出了
/*
用于完成Part表(物料表)的新增操作
如果表价信息同Quotaion表(价表)行操作
*/
CREATE PROCEDURE [Part_Add]
@partID varchar(18), -- 物料
@partName varchar(40), -- 物料品名
@partSpec varchar(40), -- 物料格
@colorID varchar(5), -- 色ID
@unitID varchar(5), -- 量位ID
@rankID char(1), -- 保ID
@depotID varchar(3), -- 存放ID
@partType1 varchar(3), -- 种1ID
@partType2 varchar(3), -- 种2ID
@partType3 varchar(3), -- 种3ID
@createDate smalldatetime, -- 建日期
@modifyDate smalldatetime =getdate, -- 修改日期
@supplierID varchar(5), -- 供商ID
@moneyID char(3), -- 价
@price numeric(7,3), -- 价
@getDate smalldatetime = getdate, -- 核价日期
@errorMsg varchar(200) OUTPUT -- 用于返回信息
AS
BEGIN TRANSACTION
INSERT INTO [Part] ( [PartID], [PartName], [PartSpec], [ColorID], [UnitID], [RankID], [DepotID], [PartType1], [PartType2], [PartType3], [CreateDate], [ModifyDate] )
VALUES ( @partID, @partName, @partSpec, @colorID, @unitID, @rankID, @depotID, @partType1, @partType2, @partType3, @createDate, @modifyDate )
IF (@@ERROR != 0) -- 如果新增操作未能利完成
BEGIN
ROLLBACK TRANSACTION
SELECT @errorMsg = '新增物料未能完成,查您入的据是否有 '
RETURN 1
END
ELSE
BEGIN
IF (@supplierID != ' ' ) -- 如果供商代不空表示同要完成Quotation(价表)的新增操作
BEGIN
INSERT INTO [Quotation] ( [SupplierID], [PartID], [MoneyID], [Price], [GetDate] )
VALUES ( @supplierID, @partID, @moneyID, @price, @getDate )
IF ( @@ERROR != 0 )
BEGIN
ROLLBACK TRANSACTION
SELECT @errorMsg = '新增物料价未能完成,查您入的据是否有 '
RETURN 2
END
END
END
COMMIT TRANSACTION
GO
[解决办法]
IF (@@ERROR=0)
BEGIN
COMMIT TRAN T1
END
ELSE
BEGIN
ROLLBACK TRAN T1
END