0

好的,所以我试图在 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

我在 VS2008 中用于捕获 raiserror 的托管 C++ 代码如下所示。. .

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->Message 已完成并用 raiserror 消息填充。

有没有其他人见过这种类型的活动?我可以在这个电话的任何一方做些什么。. . 即,在 SQL 端或 C++ 端获取此日期时间字符串包含在 raiserror 消息中????

请帮忙。我被困住了!

谢谢你 !

4

1 回答 1

0

你正在执行的是

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

我猜您想以某种方式连接用户味精。

于 2010-12-12T16:28:43.000 回答