已经搞定了。
我把存储过程里SELECT那句放到前面,把两句里的NEXTVAL和CURRVAL交换一下,然后在BCB代码最后加上CLEAR(),就搞定了。
可是谁能告诉我为什么?放到前面为什么就可以?

解决方案 »

  1.   

    可惜了这50分,不如我们来讨论一下其他问题吧,我提一个:
    不同数据库后台间移植数据库前台程序,要注意哪些问题,怎么解决不同DBMS之间的不兼容?比如我在SQL SERVER里,可以使用IDENTITY来生成自动编号,在ORACLE里就只能用SEQUENCE和TIGGER来实现,那我的前台系统如何适应不同的DBMS,数据库设计时如何兼顾不同DBMS?
      

  2.   

    兄弟,SELECT account_seed_calllog.currval INTO new_record_id FROM calllog;
    如果calllog中不只有一条记录,会返回多条记录的,难道Oracle数据库不出给来一个too many rows的错误,应该将表改成dual就可以.
    我没有用bcb开发过程序,不过我怀疑你程序修改后结果的正确性.对与移植性问题,采用设计模式中的策略模式,也许能解决你的问题.
      

  3.   

    对对对,我还忘了,确实是改成了FROM DUAL的。