Сообщение о потерях T-SQL Raiserror, если включает дату и время, преобразованные в символ (10) - PullRequest
0 голосов
/ 12 декабря 2010

Хорошо, поэтому я пытаюсь вызвать ошибку в T-SQL (SQL-2000).Базовый код Sql выглядит следующим образом.,.

declare @TmsString  char(10),
        @TmsLast    datetime,
        @UserMsg    varchar(500)

select @TmsLast = getdate()

select  @TmsString = ltrim(rtrim(convert(char(10), @TmsLast, 101)))
select  @UserMsg = '*' + ltrim(rtrim(cast(@TmsString as char))) + '*'

raiserror (@UserMsg, 12, 1)
return

Мой управляемый код C ++ в VS2008 для улавливания raiserror выглядит следующим образом.,.

System::Void Sql_ExecuteQuery (SqlCommand ^ sqlCommand, DataSet ^ OutDS, String ^ TableName)
{
   SqlConnection   ^ sqlConnect ;
   SqlDataAdapter  ^ sqlDA ;

   try
   {
      sqlDA = gcnew SqlDataAdapter () ;

      sqlConnect = gcnew SqlConnection (_ConnString) ;
      sqlConnect->Open () ;

      sqlCommand->Connection = sqlConnect ;

      sqlDA->SelectCommand = sqlCommand ;
      sqlDA->Fill (OutDS, TableName) ;
   }
   catch (Exception ^ excp)
   {
      throw gcnew Exception (excp->Message->ToString()) ;
   }
   finally
   {
      sqlConnect->Close () ;
   }
}

Теперь у меня есть точка останова в коде C ++.Если сообщение raiserror включает дату и время в виде CHAR, excp-> Message будет пустым.Если я удаляю дату и время как CHAR и просто отправляю жестко закодированное сообщение raiserror, такое как «Ошибка здесь происходит», тогда сообщение excp-> заполнено и заполнено сообщением raiserror.тип активности?Что я могу сделать по обе стороны этого вызова.,,то есть, либо на стороне SQL, либо на стороне C ++, чтобы эта строка даты и времени была включена в сообщение raiserror ????

Пожалуйста, помогите.Я застрял!

СПАСИБО!

1 Ответ

0 голосов
/ 12 декабря 2010

То, что вы выполняете, это

declare @UserMsg    varchar(500)
select  @UserMsg = '*' + convert(char(10), getdate(), 101) + '*'
raiserror (@UserMsg, 12, 1)
return

Полагаю, вы хотели бы как-то объединить сообщения пользователя.

...