oracle中的空全局临时表

时间:2016-03-17 16:39:45

标签: sql sql-server oracle

我正在将一些触发器从SQL服务器移植到Oracle。有一个基于要删除的数据的查询,并且sql server操作类似于:

SELECT a, b 
INTO #my_temp_table 
FROM
(
    SELECT A, B, C, D
    FROM DELETED D
    INNER JOIN MYTABLE M ON D.ID = M.ID
)

真正的查询非常复杂,我不知道它到底在做什么,所以我无法进行任何编辑。

我在Oracle中寻找类似的结构,我找到了GLOBAL TEMPORARY TABLE,所以我做了类似的事情

CREATE GLOBAL TEMPORARY TABLE my_temp_table 
ON COMMIT PRESERVE ROWS
AS
    SELECT A, B, C, D
    FROM MYTABLE

实际上工作正常。

我的问题是当查询没有返回任何数据时,我得到ORA-01723: zero-length columns are not allowed。 有没有办法让它发挥作用?

1 个答案:

答案 0 :(得分:0)

问题是一列计算为NULL,并且这种列无法插入到oracle中的临时表中。我也试过'',但它给了我同样的错误。 所以它是

SELECT A, B, null as C, D
    FROM MYTABLE

我将其改为

SELECT A, B, 0 as C, D
    FROM MYTABLE