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
0
A
回答
1
你缺少一個end try
/begin catch
/end catch
實際處理您已啓動異常處理。
1
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
+0
非常感謝戈登。我是SQL新手,並處於初學者階段。不會做出這樣愚蠢的錯誤。非常感謝 – VSR
相關問題
- 1. 「END或END附近的語法錯誤」列名END
- 2. 我正在嘗試運行我的應用程序我收到以下錯誤:
- 3. 錯誤:HDLCompiler:806 ...「end」附近的語法錯誤
- 4. 我得到「1附近的語法錯誤」。「錯誤
- 5. 附近有語法錯誤錯誤
- 6. 錯誤:「附近有語法錯誤‘’」
- 7. 錯誤「附近有語法錯誤‘/’
- 8. 錯誤:附近有語法錯誤「14」
- 9. 附近有語法錯誤「」
- 10. 附近有語法錯誤('
- 11. 附近有語法錯誤)'
- 12. 附近有語法錯誤('
- 13. 附近有語法錯誤「」
- 14. 附近有語法錯誤
- 15. 附近有語法錯誤「=」
- 16. 附近有語法錯誤「(」
- 17. 附近有語法錯誤('附近「=」
- 18. 錯誤的語法附近'='錯誤
- 19. SQL錯誤:「錯誤的語法附近」
- 20. 「。」附近的語法錯誤。
- 21. 「*」附近的語法錯誤
- 22. 「/」附近的語法錯誤
- 23. 附近的語法錯誤╗┐
- 24. SQL錯誤:「」附近threatAgent_id「」:語法錯誤
- 25. 錯誤:在「DISTINCT」附近:語法錯誤
- 26. ELSE附近語法錯誤
- 27. 語法錯誤附近,)
- 28. 「varchar」附近:語法錯誤
- 29. ','附近語法錯誤 - 可能與calc語法錯誤有關
- 30. 語法錯誤信息:System.Data.SqlClient.SqlException:附近有語法錯誤「=」
我添加了sql-server標籤,因爲它看起來像SQL Server。 –
請認真編輯問題以解釋您希望此代碼執行什麼操作 – Mousey
而且它看起來像您正在嘗試編寫您自己的sp_getapplock版本:https://msdn.microsoft.com/en-us/library/ms189823.aspx –