Проблема создания сообщения об ошибке в SQL Server - PullRequest
1 голос
/ 30 января 2012

У меня есть следующий фрагмент кода в моем stored procedure, я знаю, что он не работает и не должен работать, но я хотел проиллюстрировать свои намерения:

 declare @ErrorMessages varchar;
 set @ErrorMessages = 'An existing deposit on this property ends after the intended start date for the new deposit. ' +
    'Existing End Date: ' + @PreviousDepositEndDate + '. Intended Start Date: ' + @TenancyAgreementStartDate
  raiserror 50002 @ErrorMessages

Может кто-нибудь сказать мне, что я должен делать? Или любые ссылки на создание этого типа строки.

РЕДАКТИРОВАТЬ: забыл сказать, что @Dates оба datetime, сообщение об ошибке, что он не может быть преобразован из даты / времени в строку

Ответы [ 2 ]

3 голосов
/ 30 января 2012

Попробуйте это:

 declare @ErrorMessages varchar(255);

Использование только @ErrorMessages varchar; дает вам varchar(1).

set @ErrorMessages = 
      'An existing deposit on this property ends after the intended start date for the new deposit. ' + 
      'Existing End Date: ' + 
      @PreviousDepositEndDate + '. Intended Start Date: ' + @TenancyAgreementStartDate

  raiserror(@ErrorMessages, 16, 1)

Если вы не хотите указывать номер ошибки, вы должны сначала использовать sp_addmessage и определить сообщение об ошибке, которое вы можете сослаться на raiserror. Возможно, вам придется вставить несколько приведений, в зависимости от типа @PreviousDepositEndDate и @TenancyAgreementStartDate.

0 голосов
/ 30 января 2012

Вот немного другая версия, которая нравится некоторым людям, потому что она эмулирует стиль printf C:

-- Test data
declare @PreviousDepositEndDate varchar(30) = cast(getdate() - 1 as varchar(30))
    , @TenancyAgreementStartDate varchar(30) = cast(getdate() as varchar(30))
-- Throw
raiserror (N'An existing deposit on this property ends after the intended start date for the new deposit. Existing End Date: %s. Intended Start Date: %s',
           16, -- Severity,
           1, -- State,
           @PreviousDepositEndDate, -- First argument.
           @TenancyAgreementStartDate) -- Second argument.

Более подробную информацию можно найти по этой ссылке MSDN: http://msdn.microsoft.com/en-us/library/ms178592.aspx

...