关于GREENPLUM 临时表问题

0
  在GP过程调度的时候碰到这样一个问题,详细情况如下
  过程设计:
      1.双参过程:穿开始日期,结束日期两个参数
          过程实现根据开始时间,结束时间循环调用单参过程,并给单参过程传参
      2.单参过程:一个日期参数,通过双参过程传参
          实现业务数据处理逻辑。
 
  问题:双参过程中包含
           DROP TABLE IF EXISTS   临时表名称;
           CREATE LOCAL TEMP TABLE  临时表名称;
           这样的步骤,那么问题来了
       在调用双参过程存在跨天情况时,第一天的数据处理正常,当循环处理第二天数据时,过程报错。
       错误信息: : Raised an error ...relation with OID 512840411 does not exist 
       LOCAL TEMP TABLE 是基于会话的,如果第二次调用单参过程属于不同会话,理论上我删除语句也不会报错,因为做了判断,
       而且第一次调用单参过程时临时表也不存在。
   PS:将删除创建临时表步骤放到双参中不会报错。理论上双参调单参属于同一会话。
   PPS:将临时表替换为实体表不报错(这里应该可以确定跟会话相关了)
 
 1.请问上述情况是什么原因
 2.双参循环调单参,双参过程和单参过程的会话关系,不同批次循环之间的会话关系
 3.LOCAL TEMP TABLE 特性,假如是因为不同会话原因为何第一次循环中执行DROP表的时候表不存在不报错。
 
 
    
       
            
已邀请:
0

philbert 2016-05-08 回答

建议楼主使用EXECUTE来对临时表操作。

要回复问题请先登录注册