我是SQL Server新手。请帮我解决这个问题
RAISERROR('There is a problem in the code',16,1)
RETURN -1
这工作得非常好。所以我把它放在一个像这样的通用程序中:
CREATE procedure [dbo].[Raise_Error]
(@ErrorMsg varchar(6000) ,
@ErrorSeverity integer = 16,
@ErrorState integer = 1)
AS
BEGIN
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
RETURN -1
END
现在我从另一个程序调用此程序
CREATE PROCEDURE TEST_ORIG
AS
BEGIN
IF NOT EXISTS (SELECT * FROM table where FISCALYEAR='2016')
BEGIN
EXEC utils.dbo.[Raise_error]
@ErrorMsg = 'There are no valid records for processing'
RETURN -1
END
我收到错误消息
Msg 178,Level 15,State 1,Line 13
带有返回值的RETURN语句不能在此上下文中使用
任何人都可以对这里发生的事情有所了解,我该如何纠正?我需要在这里返回-1。
提前致谢
答案 0 :(得分:0)
你需要使用try block来捕获raiseerror
CREATE PROCEDURE TEST_ORIG
AS
BEGIN
BEGIN TRY
IF NOT EXISTS (SELECT * FROM table where FISCALYEAR='2016')
BEGIN
EXEC utils.dbo.[Raise_error]
@ErrorMsg = 'There are no valid records for processing'
RETURN -1
END
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE()
END CATCH
END