使用Sybase 12.5客户端库的Unidac组件中是否出现Raise错误

SSE*_*SSE 1 delphi sybase devart delphi-2010 unidac

我们在Delphi 10中使用Unidac Stored Proc组件和Sybase 12.5驱动程序

在Sybase proc我们提出错误如下,我发现它正在重新启动但它没有显示错误消息.我没有在Unidac或任何其他问题?

if @number <> null
 begin
  select @errmsg = 'Already active for location ' 
  raiserror 20001 @errmsg 
   return 1 
 end 
Run Code Online (Sandbox Code Playgroud)

我在delphi中执行storedproc,如下所示

try 
  ExecProc; 
  except on E:Exception do 
    begin 
     ErrorMsg(EDatabaseError(ExceptObject).Message,0); 
     Exit; 
   end;
Run Code Online (Sandbox Code Playgroud)

但我们仍然无法捕获异常.

即使我尝试过如下.

try 
  UniStoredProc.StoredProcName := 'test'; 
  UniStoredProc.ExecProc; 
except 
  on E:EUniError do 
    ShowMessage(E.Message); 
end
Run Code Online (Sandbox Code Playgroud)

相同的代码适用于Sybase 15客户端库

我们使用Sybase 15服务器和Sybase 12.5 Client库连接到服务器,这会有问题吗?之前我们使用BDE和Sybase 12.5客户端库,所以我们没有遇到任何问题,现在我们发现unidac存在这个问题

Joh*_*ica 5

为了比较null你需要is像这样使用运算符:

if @number is not null
begin
  select @errmsg = 'Already active for location ' 
  raiserror 20001 @errmsg 
  return 1 
end 
Run Code Online (Sandbox Code Playgroud)

现在它应该在if-then语句中执行代码.