2

我有以下 SQL

INSERT INTO [dbo].[table1] ([val1], [val2]) 
OUTPUT INSERTED.* 
VALUES (@val1, @val2)

SqlCommand.ExecuteReader()用来获取一个SqlDataReader读取输出行的。当参数正确时,一切正常。

当表具有参数不满足的约束时,问题就开始了,例如:

ALTER TABLE [dbo].[table1]
ADD CONSTRAINT [chk_table1_distinct_values] 
CHECK (val1 <> val2)

如果我对 val1 和 val2 执行具有相同值的命令,则阅读器会静默失败。我所能做的就是检查SqlDataReader.HasRows返回的属性false

所以我的问题是如何从返回的错误中得到更具体的错误SqlDataReader

4

2 回答 2

1

您是否检查过“正常”输出,例如在 .NET 中捕获存储过程打印输出

从 AdaTheDev 复制:

myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);
void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
    // Do something with e.Message
}
于 2011-01-20T20:03:22.430 回答
0

在该部分中添加begin try..catch和, 。catchraiserror

于 2011-01-20T15:50:54.743 回答