Reputation: 3
CREATE PROCEDURE [dbo].[SP_StoredProc_Status] @Procname varchar(50)
AS
BEGIN
---- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT
SET NOCOUNT ON;
SET DATEFORMAT dmy;
BEGIN TRY
-- Check if the procedure is already running.
-- This check is MANDATORY in all stored procs.
IF EXISTS (
SELECT *
FROM IMP_StoredProcRunTracking
WHERE StoredProcName = @Procname
AND DATEADD(hh, 1, ISNULL(StartedAt, DATEADD(year, - 50, GETDATE()))) > GETDATE()
)
BEGIN
RETURN
END
ELSE
BEGIN
MERGE INTO IMP_StoredProcRunTracking AS Target
USING (
SELECT @procname StoredProcName
) AS Source
ON Target.StoredProcName = Source.StoredProcName
WHEN MATCHED
THEN
UPDATE
SET Target.StartedAt = GETDATE()
WHEN NOT MATCHED
THEN
INSERT (
StoredProcName
,StartedAt
)
VALUES (
@Procname
,GETDATE()
);
end
END
Upvotes: 0
Views: 31
Reputation: 62
Create PROCEDURE [dbo].[SP_StoredProc_Status] @Procname varchar(50)
AS
BEGIN
---- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT
SET NOCOUNT ON;
SET DATEFORMAT dmy;
BEGIN TRY
-- Check if the procedure is already running.
-- This check is MANDATORY in all stored procs.
IF EXISTS (
SELECT *
FROM IMP_StoredProcRunTracking
WHERE StoredProcName = @Procname
AND DATEADD(hh, 1, ISNULL(StartedAt, DATEADD(year, - 50, GETDATE()))) > GETDATE()
)
BEGIN
RETURN
END
ELSE
BEGIN
MERGE INTO IMP_StoredProcRunTracking AS Target
USING (
SELECT @procname StoredProcName
) AS Source
ON Target.StoredProcName = Source.StoredProcName
WHEN MATCHED
THEN
UPDATE
SET Target.StartedAt = GETDATE()
WHEN NOT MATCHED
THEN
INSERT (
StoredProcName
,StartedAt
)
VALUES (
@Procname
,GETDATE()
);
end
END TRY
BEGIN CATCH
-- Execute error retrieval routine.
END CATCH
END
Upvotes: 1
Reputation: 1269603
You are missing an end try
/begin catch
/end catch
to actually handle the exception handling that you have started.
Upvotes: 1