oracle中的临时表问题
一般我们都用 
create global temporary table 来建立
但是选项中还有一个
create local temporary table
本人手头没有产品说明。
想搞清楚 local和global的区别,网上找了一下 ,说没有区别。
如果没有区别,为什么会建立2个不同的选项。
如果说表空间 那也奇怪啊。
求确切的解释

解决方案 »

  1.   

    哪里来的local temporary table
      

  2.   

    local的似乎并不是create的,而是declare的,这个可能是用在存储过程、函数之类的pl/sql代码里用来处理临时数据的,处理完就没了,不同的代码应该也不会互相影响,估计也存在于当前脚本中
      

  3.   

    实际上, oracle 并没有 local temporary 类型的临时表。可以考虑  type 配合管道函数来实现内存表,速度还是可以的。
      

  4.   

    1. 从 Oracle 18c 开始,提供了 GLOBAL TEMPORARY TABLE 之外的另一个选项:PRIVATE TEMPORARY TABLE。2. 这种私有临时表与全局临时表有几个不同之处:私有临时表会在事务(transaction)结束或者会话(session)结束时被删除,表和数据都会删除;它们存储在内存中,表的定义和数据都只对当前会话可见;SYS 用户不能创建私有临时表。3. 还有一些使用上的限制,比如以特定前缀开始,默认是 ORA$PTT_ 。可以参考 Oracle 文档:https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/CREATE-TABLE.html#GUID-F9CE0CC3-13AE-4744-A43C-EAC7A71AAAB6另外,PostgreSQL 的写法是 [GLOBAL | LOCAL] TEMPORARY TABLE,不过这两种写法没有区别。
      

  5.   

    临时表,还是用with吧。