在 FUNCTION 中创建临时表 [重复]

Posted

技术标签:

【中文标题】在 FUNCTION 中创建临时表 [重复]【英文标题】:Create temporary TABLE inside a FUNCTION [duplicate] 【发布时间】:2013-02-12 08:13:35 【问题描述】:

如何创建一个临时表,以便在调用函数时返回?

【问题讨论】:

阅读动态 SQL:docs.oracle.com/cd/E11882_01/appdev.112/e25519/… @user2001117:查看标签 Oracle 中的临时表不应该(需要)动态创建;它们是具有会话特定数据的永久对象,而不是您可以传递或返回的东西。请参阅this 和this 了解更多信息。 这是一种 MS T-SQL 做事方式。 Oracle中的临时表不同;要了解更多信息,请在此处查看我对非常相似问题的回答 ***.com/a/1193443/146325 如果没有更多信息,我不确定这个问题有多大用处。这个临时表有什么意义?你到底想达到什么目的?这是一个全局临时表,还是您正在尝试创建一个“类似表”的输出,其中您想要获取的是流水线函数或引用游标? 【参考方案1】:

看到这个:

create or replace procedure maketemptab 
    is 
    sqlstmt varchar2(500); 
    begin 
    sqlstmt := 'CREATE GLOBAL TEMPORARY TABLE(col1 varchar2(10))'; 
    execute immediate sqlstmt; 
    end;

【讨论】:

那不会创建临时表。 不仅不会创建表(存在 sybtax 错误),以这种方式创建临时表对于 Oracle 来说是惯用的错误。

以上是关于在 FUNCTION 中创建临时表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在存储过程中创建临时表

在 SQL Server 中创建临时表是不是需要使用#?

如何在 Oracle 数据库中创建临时表?

在 SQL 中创建临时表

使用 GROUP BY 在 TRIGGER 中创建临时表

如何在打开游标之前在存储过程中创建一个临时表?