gpt4 book ai didi

sql-server - SQL Server批处理问题与错误处理

转载 作者:行者123 更新时间:2023-12-03 08:36:34 25 4
gpt4 key购买 nike

我对SQL Server中的SQL批处理有问题。

假设我使用以下代码执行SqlCommand:

 private void Example(SqlConnection connection, SqlTransaction transaction)
{
using (SqlCommand cmd = new SqlCommand("select * from T1; EXECUTE('update T2 set 1=2')", connection, transaction))
{
SqlDataReader reader = cmd.ExecuteReader();
..
..
}
}

现在,由于该批处理中的第一个语句成功执行,所以即使EXECUTE(''')语句显然是错误的,我也不会得到EXCEPTION和RESULT的结果。

如果我反转这些语句,则会得到一个异常,因为在第一个错误之前未生成结果集。

现在,假设我想在两种情况下都检测到错误,如何在不生成“冗余”代码的情况下执行该操作,如下所示:
 private void Example(SqlConnection connection, SqlTransaction transaction)
{
using (SqlCommand cmd = new SqlCommand("select INTO #T1 from T1; EXECUTE('update T2 set 1=2'); select * from #T1", connection, transaction))
{
SqlDataReader reader = cmd.ExecuteReader();
..
..
}
}

没有这个问题可能看起来很奇怪,但仍然...我想知道答案,请不要问为什么:)

最佳答案

您需要读取SqlDataReader,直到它不再返回结果为止(Read()循环,然后是NextResult()并重复)。 TDS流上还有一个异常(exception),而SqlClient尚未解析它。

关于sql-server - SQL Server批处理问题与错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1388923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com