如题,谢谢!

解决方案 »

  1.   

    该出错提示表明你操作的表中有相同的数据存在,而你又是对相同的数据进行修改或删除操作.避免该问题的出现是你最好为该表增加一下ID字段,将其类型设为decimal,在其下的列框中将"标识"设为"是",这样你就将该字段标识为"种子"了,从而保证该表中的数据永远是唯一的.(在SQLSERVER中适用)
      

  2.   

    在delphi中使用BDE连接oracle,sql语句的作用是将某段日期内的所有记录查询出,并插入到临时表中,结果在程序中bde出现上述错误,同样的语句在oralce中的sqlplus中就可以,请教为什么?谢谢!
      

  3.   

    在delphi中使用BDE连接oracle,sql语句的作用是将某段日期内的所有记录查询出,并插入到临时表中,结果在程序中bde出现上述错误,同样的语句在oralce中的sqlplus中就可以,请教为什么?谢谢!
    楼上的,怎么解释,谢谢!
      

  4.   

    很久没正式回答过问题了,有一年多快两年了,既然今天回答开了个头还是把它答完吧,分对于我来说一点用也没有。还是说正事吧。delphi操作oracle用bde不是一个好选择,建议不要用。最好还是用doa(direct oracle access,现在有4.05版)或 ODAC(Oracle Data Access Components 5.1.0.6)。  delphi 窑洞就有下了http://www.51delphi.com/delphi/soft。我引用网上的一段话来说一下rowid吧,看了应该会有所了解的------------------------------------------------------------------------------------
     
    1、rowid是一个伪列,当创建数据库中的表时就系统会自动创建,附加到表结构中,是用来确保表中行的唯一性,它并不能指示出行的物理位置,但可以用来定位行。当向表中insert数据时,rowid会自动产生数据,此后将不再改变(除非你将此条记录删除了)。 2、rowid是存储在索引中的一组既定的值(当行确定后)。我们可以像表中普通的列一样将它选出来。 3、利用rowid是访问表中一行的最快方式。
     
    4、rowid需要10个字节来存储,显示为18位的字符串。 rowid的组成结构为: 
    data object number(6位字符串)+relative file number(3位字符串)+block number(6位字符串)+row number(3位字符串),如:AAAADeAABAAAAZSAAA 5、我们可以借助oracle提供的包dbms_rowid,来对rowid进行解析从而获取关于行的相关信息: 
    bossdb-SQL>select 
    2 rowid, 
    3 dbms_rowid.rowid_object(rowid) obj_id, 
    4 dbms_rowid.rowid_relative_fno(rowid) df#, 
    5 dbms_rowid.rowid_block_number(rowid) blknum, 
    6 dbms_rowid.rowid_row_number(rowid) rowno 
    7 from p_test where rownum<5; 
    ROWID OBJ_ID DF# BLKNUM ROWNO 
    ------------------ ---------- ---------- ---------- ---------- 
    AAAQ+tAANAAAC6SAAA 69549 13 11922 0 AAAQ+tAANAAAC6SAAB 69549 13 11922 1 AAAQ+tAANAAAC6SAAC 69549 13 1 -------------------------------------------------------------------------------------初学者往往忽略了rowid这个字段,所以当出现数据重复时就不知怎么处理了,最简单的用法是
    select a.*,a.rowid   from   表名  a 试一下吧,累了,不写