首页 > 解决方案 > 返回结果集后发生 SQL 错误时如何强制 TADOConnection 抛出异常

问题描述

TADOConnection 不希望在返回某些结果集后发生异常时抛出异常。例如:

ADOConnection1.Execute('SET NOCOUNT ON; SELECT 0; THROW 50000, ''Custom error'', 1;');

上面的代码不会抛出,因为有一个结果集由SELECT 0;

在这种情况下如何强制 TADOConnection 抛出异常?我无法避免返回结果集。我尝试过的事情:

我找到了一篇针对此问题的文章,但它涉及 .NET:

未检测到的 SQL 异常的奇怪案例

标签: delphidelphi-xe2ado

解决方案


我能够得到Custom Error显示,使用TADOQuery这样的:

var
  t : integer;
begin
  ADOQuery1.SQL.Text := 'SET NOCOUNT ON; SELECT 0; THROW 50000, ''Custom error'', 1;';
  ADOQuery1.Open;
  t := 0;
  ADOQuery1.NextRecordset(t); // exception thrown here
end;

推荐阅读