好的,所以我试图在 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 消息中????
请帮忙。我被困住了!
谢谢你 !