1

内に次のコードがあります。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た。エラー メッセージは、日時から文字列に変換できないということです。

4

2 に答える 2

3

これを試して:

 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ます。

于 2012-01-30T15:31:24.960 に答える
0

Cのprintfスタイルをエミュレートするため、一部の人々が好むわずかに異なるバージョンを次に示します。

-- 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

于 2012-01-30T15:41:32.777 に答える