由于系统业务提交量大,我用触发器调用存储过程,便于日后的维护
问:我如何在DELPHI中得到触发器的raiserroe的返回值
{触发器例}
CREATE Trigger TUStockSchedule on StockSchedule
for Update 
as

Declare @PreMoney money,
        @IsActive Int,
        @ClientDataID int,
        @iserror char
Select @PreMoney = PreMoney, @IsActive = IsActive ,@ClientDataID= ClientDataID FRom StockSchedule

if (@IsActive = 0)
begin    

exec wangjie @PreMoney, @IsActive,@ClientDataID
if @@error <> 0
begin
raiserror ('错误返回串',16,1)
rollback transaction

end
end;
{存储过程}
CREATE Procedure wangjie 
@PreMoney money,
@IsActive Int,
@ClientDataID int
as 
if @Isactive = 0 
begin
update FinanceTotal set FinanceTotal.Payed = @PreMoney + FinanceTotal.Payed 
where FinanceTotal.ClientDataID = @ClientDataID
             end
GO

解决方案 »

  1.   

    raiserror ('错误返回串',18,18)
    在Delphi中要用try except on e:Exception do begin end
      

  2.   

    我知道, 但不是我解決的, 問:
    http://borland.mblogger.cn/xiaocuo_zrf
      

  3.   

    我只是试验了ADO和打了最新补丁的DBExpress
    格式就是 maltel(迈拓) 的做法。
      try
        ADOCommand1.Execute;
      except
        on E: Exception do
          SHowmessage(E.Message);
      end;  try
        SQLDataSet1.Open;
      except
        on E: Exception do
          SHowmessage(E.Message);
      end;这两种都成功的现实了错误信息。