我有以下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
的{{1}}属性。
所以我的问题是如何从返回的false
答案 0 :(得分:1)
您是否检查了Capture Stored Procedure print output in .NET
中的“正常”输出从AdaTheDev复制:
myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);
void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
// Do something with e.Message
}
答案 1 :(得分:0)
在begin try..catch
部分catch
内添加raiserror
。