本帖最后由 zt735268255 于 2011-06-21 08:45:04 编辑

解决方案 »

  1.   

    你每次都创建临时表ca_emr,oracle不会自动删除临时表,所以报名称已被使用的错误!!
    oracle的临时表的表不是临时的,跟SQLServer有重大的区别!!
    数据是临时的会自动随事务或会话结束而清除,并且不同的会话之间是不能看见对方的数据。
    因此:
    不要在存储过程中建立临时表,先在外面建立好临时表,然后在存储过程中处理数据就行了。CREATE GLOBAL TEMPORARY TABLE ca_emr(
      MRID varchar(20),
      dia_date varchar(30),
      flag varchar(1) ,
      doctor varchar(5),
      iccardno varchar(20),
      MDESCRIPT varchar(4000),
      MHISDESCRIPT varchar(4000) ,
      CHECKUP varchar(4000) ,
      CHECKASS varchar(4000) ,
      COURSEREC varchar(4000),
      admiss_times smallint ,
      DIAGNOSECONTENT varchar(60),
      DIAGNOSERANGE nchar(2)
      )
      on commit PRESERVE rows;
      

  2.   

    ORA-00955: 名称已由现有对象使用也就是告诉你,此临时表的名字已被已经存在的数据库对象所使用,
    原因是你多次执行此语句,或者数据库里面已经有其他对象使用了此名;
    数据库对象的命名应该是一个有意义的名字,
    比如:student,class,emp,dept...