我正在将一些触发器从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
。
有没有办法让它发挥作用?
答案 0 :(得分:0)
问题是一列计算为NULL
,并且这种列无法插入到oracle中的临时表中。我也试过''
,但它给了我同样的错误。
所以它是
SELECT A, B, null as C, D
FROM MYTABLE
我将其改为
SELECT A, B, 0 as C, D
FROM MYTABLE