函数中无法使用临时表

存储过程或者函数里建临时表,在存储过程中这个临时表不能使用,存储过程结束了,临时表才真正建起来

麻烦贴下复现过程,以及对应的ob版本

CREATE OR REPLACE FUNCTION sumcreateTempTabel(in_accperiod varchar2)

RETURN VARCHAR2 IS

sp_errstr varchar2(500);

BEGIN

– 创建临时表

EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE T_11(

    TREATYID VARCHAR2(10) NOT NULL ,

    COMCODE VARCHAR2(8) NOT NULL ,

    ITEMID VARCHAR2(10) NOT NULL ,

    COMKIND VARCHAR2(1),

    COMMISSION DECIMAL(32,6)

) ON COMMIT PRESERVE ROWS';

INSERT INTO T_11(treatyid, comcode, itemid, comkind,commission)

SELECT treatyid, comcode, itemid, comkind,commission

FROM T_22

WHERE flag = ‘1’ AND comkind IS NOT NULL AND COMMISSION IS NOT NULL;

– 返回临时表的名称

RETURN sp_errstr;

EXCEPTION

  WHEN OTHERS THEN

      DBMS_OUTPUT.PUT_LINE('ERR: '||SQLCODE||': '||SQLERRM);

      sp_errstr:=SQLERRM;

END;

V4.2.1

稍等,内部测试下

你使用的企业版的oracle租户吧,社区版没有oracle模式,可以联系企业侧。不过4.x的临时表功能目前还不稳定,具体建议找企业侧确认下。

社区版会存在这种问题么?我们正在选型,存储过程是较为重要的一个指标

社区版mysql租户暂时还不支持临时表功能的,无法验证这个问题。

:flushed:不好意思,我刚接触,还区分不出各个版本。但是,社区版MySQL不支持临时表?
有各版本支持功能清单的文档么?

这个链接有一些功能区别,但没细致到小的类型功能,OceanBase分布式数据库-海量数据 笔笔算数
一般官网上搜索功能,对应mysql租户没有相关介绍的,基本是不支持的。或者可以看各个版本的release node。

临时表后续会支持,当前还在做。

如果有什么功能不支持的,也可以给我们提issue。https://github.com/oceanbase/oceanbase/issues

:handshake: :handshake: :handshake:谢谢