Nuke
Nuke

Reputation: 1259

Throw error in SQL Server 2008 R2

I'm working with SQL Server 2008 R2 and I have an stored procedure where I'm trying to throw errror

throw 50001, 'Couldnot process,Please verify Transaction ID and EmbossLine', 1

But the query doesn't get executed and throws error on 50001. It was working fine on SQL Server 2012. I think there is some issue with versions. Is there anyother way I can throw error in SQL Server 2008 R2?

This is my stored procedure:

Alter procedure [dbo].[spGetRedemption]
    @pan varchar(19),
    @transId bigint
AS 
Begin
    if EXISTS(select * from POS_Transactions where ID=@transId) 
    Begin
       select 
           PT.ID, PT.TransactionDate, M.MerchantName1, 
           PT.TerminalID, PT.BatchNumber, PT.SequenceNumber, PT.PAN,
           C.EmbossName, PT.TotalAmount, PT.CurrencyCode, 
           TT.TransactionType, PT.InvoiceNumber 
       from 
           POS_Transactions PT
       inner join 
           Terminal T on T.TerminalID = PT.TerminalID
       inner join 
           Merchant M on M.MerchantID = T.MerchantID
       inner join 
           Card C on C.EmbossLine = PT.PAN
       inner join 
           TransactionType TT on TT.TransactionTypeID = PT.TransactionTypeID
       where 
           PT.ID = @transId
           and PT.PAN = @pan
    END
    Else
    Begin
         throw 50001, 'Couldnot process,Please verify Transaction ID and EmbossLine', 1
    END
End

Upvotes: 0

Views: 1332

Answers (1)

JohnLBevan
JohnLBevan

Reputation: 24470

Throw is not available in SQL Server 2008R2; it was first introduced in SQL Server 2012.

https://msdn.microsoft.com/en-us/library/ee677615(v=sql.110).aspx

The alternative would be to use Raiserror (note; only 1 E in the middle; it's not RaiseError).

From the above link, there are some differences between these methods:

RAISERROR statement

If a msg_id is passed to RAISERROR, the ID must be defined in sys.messages.

The msg_str parameter can contain printf formatting styles.

The severity parameter specifies the severity of the exception.

THROW statement

The error_number parameter does not have to be defined in sys.messages.

The message parameter does not accept printf style formatting.

There is no severity parameter. The exception severity is always set to 16.

Upvotes: 3

Related Questions