我想在存储过程里有Delphi 中是 try 的功能吗?
比如说:
有表 T1 
内有字段 F1 
check 约束 >0 
我在存储过程里写
 Insert into T_1(F1) values('-1')
 if @@error=547 
 begin
  @ReturnMSG='Must > 0'
  @ReturnValue='0'
 end可是一般到 Insert Into 就出错了,下面就不执行了。
放前面处理是可以,但是多起来很麻烦
还请高手指教 

解决方案 »

  1.   

    begin transactionInsert into T_1(F1) values('-1')
    if @@error=547 
     begin
      @ReturnMSG='Must > 0'
      @ReturnValue='0'
     end
    commit transaction
    GO
      

  2.   

    我想,有没有办法。实现try 
       Insert into T_1(F1) values('-1')
    excpet
        @ReturnMSG='Must > 0'
        @ReturnValue='0'
    end;
    实现这种功能
      

  3.   

    放前面是可以,
    但是对输入值的约束只能放前面,这样,很多操作要重写函数,
    但是如果可以放在后面的话。我只要断送@@error 这个的值就是判断是什么错了
      

  4.   

    set xact_abort on
    begin tran
    Insert into T_1(F1) values('-1')
    if @@error=547
    begin
      @ReturnMSG='Must > 0'
      @ReturnValue='0'
      rollback tran
    end
    commit tran
      

  5.   

    还是一样,错误信息还是会弹出来实现try 
       Insert into T_1(F1) values('-1')
    excpet
        select 0 as ReturnValues,'547 Error' as REturnMSG
    end;
    实现这种功能
      

  6.   

    BEGIN
       Insert into T_1(F1) values('-1');
    EXCEPTION
       WHEN error=547 THEN
       ReturnMSG := ('Must > 0');
       ReturnValue :='0'; 
    END; Oracle中, 呵呵
      

  7.   

    sc_arhat(只想做个好Coder
    说得对
      

  8.   

    唉 Oracle 都行 晕哦