In our application we need to execute a Stored Procedure instead of simply deleting a record. This stored procedure will check if deleting the record is allowed, and if that is the case, it will delete the necessary records. But if the prerequisites are not met, our Stored Procedure returns a certain RETURN_VALUE and a message in a @Message parameter. This is what the stored Procedure looks like
Code: Select all
-- =============================================
-- Author: sLesage
-- Create date: 20121106
-- Description: Deletes a dagtaak, its details and maybe also the Opdracht
-- =============================================
ALTER PROCEDURE P_DELETE_DAGTAAK
-- Add the parameters for the stored procedure here
@DagtaakId INT,
@Message NVARCHAR( max ) OUTPUT
AS
BEGIN
DECLARE @OpdrachtId INT
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF ( EXISTS ( SELECT DagtaakId FROM T_DAGTAAK TD WHERE DagtaakId = @DagtaakId AND StatusId <= 7 ) )
BEGIN
-- We have a Dagtaak with the given ID which isn't in process yet.
IF ( EXISTS ( SELECT OpdrachtId FROM T_OPDRACHT TO1 WHERE DagtaakId = @DagtaakId AND StatusId > 6) )
BEGIN
SET @Message = 'Kan de dagtaak niet verwijderen omdat de bijhorende opdracht reeds werd gestart'
PRINT @Message
RETURN -1
END
SELECT @OpdrachtId = OpdrachtId FROM T_OPDRACHT TO1 WHERE DagtaakId = @DagtaakId AND StatusId <= 6
IF ( @@rowcount = 1 )
BEGIN
DELETE FROM T_OPDRACHT_DETAIL WHERE OpdrachtId = @OpdrachtId
DELETE FROM T_OPDRACHT WHERE OpdrachtId = @OpdrachtId
END
DELETE FROM T_DAGTAAK_DETAIL WHERE DagtaakId = @DagtaakId
DELETE FROM T_DAGTAAK WHERE DagtaakId = @DagtaakId
END
ELSE
BEGIN
IF ( EXISTS( SELECT DagtaakId FROM T_DAGTAAK TD WHERE DagtaakId = @DagtaakId ) )
BEGIN
SET @Message = 'Kan de dagtaak niet verwijderen omdat de dagtaak reeds werd gestart'
PRINT @Message
RETURN -2
END
ELSE
BEGIN
SET @Message = 'Kan de dagtaak niet terugvinden'
PRINT @Message
RETURN -3
END
END
END
Code: Select all
{:RETURN_VALUE = CALL P_DELETE_DAGTAAK;1 (:DagtaakId, :Message)}
Thanks a lot in advance,
Stefaan