我在数据库的一个表中name字段是nchar(5)类型的,不能为空。使用了一个存储过程向表中插入新记录,需要向存储过程传递所有字段的值,使用ADOStoreProc调用存储过程,name字段的值是从edit中取得的,现在的问题是如果edit中什么也不输入,那就会向存储过程中传入''。
我想知道有没有办法传入null,使得存储过程执行失败然后抛出异常呢,还有抛出的是什么异常,应该怎么捕捉。

解决方案 »

  1.   

    在存储过程中写
    if @name='' RAISERROR ('姓名不可以为空!', 16,1)delphi
    try
      ...
      post;
    except
      on E:Exception do showmessage(E.message);
    end
      

  2.   

    嗯,谢谢。我再多问一下,只有16才能被delphi 捕捉到吗?还有那个1,其他的值有用处吗。
    如果我把存储过程中能处理的错误全在存储过程中用raiserror 处理,有没有什么问题。