大家好,我是在Oracle数据库里面建立一个存储过程,先建立一个临时表,然后再将临时表的数据通过透明网关导入SQL Server,sql语句我已经测试没问题。
而且我的存储过程编译没问题,一运行就报错,错误在create GLOBAL TABLE T_GZ_TEMP as一行。请高手执教
CREATE OR REPLACE PROCEDURE p_ToSQLServer
as
BEGINexecute immediate 'create GLOBAL TABLE T_GZ_TEMP as  
SELECT t_gz_faultinfo_cp.custunit, 
       t_gz_faultinfo_cp.happendate,
       t_gz_faultinfo.chart, t_gz_faultinfo_cp.pronum, t_gz_faultinfo.NAME,
       t_gz_faultinfo.TYPE, t_gz_faultinfo.SYSTEM, t_gz_pheno.faultproid,
       t_gz_pheno.describ, t_gz_pheno.recordid,
       t_gz_findoccasion.occasioncode, t_gz_findoccasion.occasionnam,
       t_gz_disposal.disposalid, t_gz_disposal.detail, t_gz_reason.reasonid,
       t_gz_reason.describ describ1, t_gz_duty.dutyid, t_gz_duty.describ describ2
  FROM t_gz_faultinfo_cp,
       t_gz_faultinfo,
       t_gz_pheno,
       t_gz_findoccasion,
       t_gz_disposal,
       t_gz_reason,
       t_gz_duty
 WHERE t_gz_faultinfo_cp.faultid = t_gz_faultinfo.faultid
   AND t_gz_faultinfo_cp.faultproid = t_gz_duty.faultproid
   AND t_gz_faultinfo_cp.faultproid = t_gz_disposal.faultproid
   AND t_gz_faultinfo_cp.faultproid = t_gz_pheno.faultproid
   AND t_gz_faultinfo_cp.faultproid = t_gz_reason.faultproid
   AND t_gz_faultinfo_cp.occasion = t_gz_findoccasion.occasionnam
 ON COMMIT PRESERVE ROWS';
 --创建一个临时表
 
execute immediate 'insert into GZ_SQLSERVER@OP_TO_SQLMOBILE.US.ORACLE.COM("CUSTUNIT","HAPPENDATE","CHART","PRONUM","NAME","TYPE","SYSTEM","FAULTID","FAULTDESCRIB","RECORDID","OCCASIONCODE","OCCASIONNAME","DISPOSAID","DISPOSADETAIL","REASONID","FAULTREASON","DUTYID","FAULTDUTY")
select * from T_GZ_TEMP';
--将临时表的数据导入SQL Server库中   commit;END p_ToSQLServer;