2016-03-17 83 views
-1

我將一些觸發器從SQL Server移植到Oracle。有基於數據的查詢多數民衆贊成被刪除,和SQL Server的操作是一樣的東西:oracle中的全局臨時表空間

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 
) 

真正的查詢是非常複雜的,我不知道這是真的在做什麼,所以我不能做任何編輯。

我一直在尋找甲骨文類似的結構,而且我發現全局臨時表,所以我不喜歡的東西

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

'SELECT COALESCE(A,CAST(NULL AS數據類型))AS A,...已刪除d ...'? – lad2025

+0

對不起'datatype '是什麼? – Phate01

+0

像INT/NUMBER/VARCHAR2(100)等每列的數據類型 – lad2025

回答

0

問題是一列的計算結果爲NULL,這種列不能插入到oracle的臨時表中。我也試過'',但它給了我同樣的錯誤。 所以這是

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

,我把它改成

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