2015-07-28 6 views
-1

Я работаю с SQL Server 2008 R2 и у меня есть хранимая процедура, где я пытаюсь бросить errrorошибка Throw в SQL Server 2008 R2

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

Но запрос не выполняется и получить броски ошибка на 50001. Он отлично работал на SQL Server 2012. Я думаю, что есть некоторые проблемы с версиями. Есть ли какой-либо другой способ, который я могу вынести ошибку в SQL Server 2008 R2?

Это моя хранимая процедура:

Alter procedure [dbo].[spGetRedemption] 
    @pan varchar(19), 
    @transId bigint 
AS 
Begin 
    if EXISTS(select * from POS_Transactions where [email protected]) 
    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 
+0

Задать вопрос? – Haris

+0

@ Harry Post Edited! – Nuke

+2

'Throw' пришел в SQL 2012; 'Raiserror' в 2008 году. Https://msdn.microsoft.com/en-us/library/ee677615(v=sql.110).aspx – JohnLBevan

ответ

2

Throw не доступен в SQL Server 2008R2; он впервые был введен в SQL Server 2012.

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

Альтернативой было бы использовать Raiserror (примечание: только 1 E в середине, это не RaiseError).

Из приведенной выше ссылке, есть некоторые различия между этими методами:

RAISERROR заявление

Если MSG_ID передается RAISERROR, идентификатор должен быть определен в sys.messages.

Параметр msg_str может содержать стили форматирования printf.

Параметр серьезности указывает серьезность исключения.

БРОСОК заявление

параметрирования В error_number не должен быть определен в sys.messages.

Параметр сообщения не принимает форматирование в формате printf.

Не существует параметра серьезности. Степень исключительности всегда равна 16.

Смежные вопросы