ここに正常に実行されるストアド プロシージャがありますが、パラメータを省略すると、カスタム エラー メッセージが機能しません。代わりに、デフォルトのエラー メッセージが表示されます。
私が間違っていることを誰かが知っていますか?SQL Server 2012 を使用しています
たとえば、私がそれを呼び出すとき
Exec sp_getClientTransactioninfo '2001-01-01'
印刷しているはずです
'This is the error msg= To Date required. Please enter To Date'
しかし、そうではありません。
Alter PROCEDURE sp_getClientTransactioninfo
@FromDate DATETIME,
@ToDate DATETIME,
@Active int
AS
Set NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
-- Variables to handle error msg
Declare @error int, @errorMessage varchar(200)
SET @error = 0;
SET @errorMessage = '';
IF (@FromDate IS NULL)
BEGIN
SET @error = -1
SET @errorMessage = 'From Date required. Please enter From date'
GOTO Final_Process
END
IF (@ToDate IS NULL)
BEGIN
SET @error = -1
SET @errorMessage = 'To Date required. Please enter To Date'
GOTO Final_Process
END
IF (@Active IS NULL)
BEGIN
SET @error = -1
SET @errorMessage = 'Active status required. Please enter active status'
GOTO Final_Process
END
Select RestaurantID, ClientName as Client, Mem_Name as Member, Mem_Address as Address, Sum(AmountSpent) as 'Amount Spent',
--((membersamt)/totclientamt)*100
convert(varchar,floor(round((SUM(mv.AmountSpent)/ ( select SUM(AmountSpent) from UDC_MemberVisits umv where
umv.RestaurantId=mv.RestaurantId ))
* 100,0)))+'%' as perAmountSpent
from dbo.UDClub_Client as C
join dbo.UDC_MemberVisits as MV on MV.RestaurantId = C.ClientID
join dbo.UDC_Member as M on M.Mem_ID = MV.MemberID
where MV.DateVisited between @FromDate and @ToDate
group by ClientName, Mem_Name, Mem_ID, RestaurantID, Mem_Address
order by ClientName
--Error Handling
Declare @ErrorVar INT
SET @ErrorVar = @@ERROR
IF @@Error <> 0
Final_Process:
Print 'This is the error msg=' + @errorMessage
Print 'Error code =' + CAST(@error as NVARCHAR(8));