Jag har följande SP: ... När jag såg din kod så såg jag vad som var fel, men jag skriver den llite kortare lat som jag är:) Jag skrev om else så här:Dubbla fel i SP
<code>
ALTER PROC deleteOrder
@customerID INT
AS
DECLARE @errMess VARCHAR(100)
DECLARE @typeOfJunkID INT
BEGIN TRAN
IF(EXISTS(SELECT customerID FROM customer WHERE customerID = @customerID))BEGIN
SELECT @typeOfJunkID = typeOfJunkID FROM customer WHERE customerID = @customerID
DELETE FROM customer
WHERE customerID = @customerID
IF(@@error <> 0)GOTO noDelete
IF(@typeOfJunkID = 1)BEGIN
DELETE FROM carJunk
WHERE customerID = @customerID
IF(@@error <> 0)GOTO noDelete
COMMIT TRAN
RETURN
END
ELSE BEGIN
DELETE FROM junk
WHERE customerID = @customerID
IF(@@error <> 0)GOTO noDelete
COMMIT TRAN
RETURN
END
END
ELSE BEGIN
SET @errMess = 'Det gick inte att hitta ordern i registret.'
RAISERROR(@errMess, 16, 1)
END
noDelete:
IF(@@error <> 0)BEGIN
SET @errMess = 'Det gick inte att radera ordern'
ROLLBACK TRAN
RAISERROR(@errMess, 16, 1)
RETURN
END
</code>
När jag provar den så fungerar den, förutom när jag provar med customerID som inte finns. Då kör den else-satsen som den ska, men den går också in i noDelete. Detta har väl kanske ingen betydelse eftersom det ligger i en transaktion så utförs ju inget, men jag fattar inte vad jag har gjort fel.Sv: Dubbla fel i SP
ELSE BEGIN
DELETE FROM junk WHERE customerID = @customerID
IF(@@error = 0)
BEGIN
COMMIT TRAN
END
ELSE
BEGIN
ROLLBACK TRAN
END
RETURN
END
ENDSv:Dubbla fel i SP
<code>
ELSE BEGIN
SET @errMess = 'Det gick inte att hitta ordern i registret.'
RAISERROR(@errMess, 16, 1)
ROLLBACK TRAN
END
</code>
Nu fungerar det som jag hade tänkt mej.