2017-04-07 33 views
0

請告訴我錯爲給我一個錯誤的查詢:IF-的存在不是在甲骨文工作了查詢

DECLARE 
    con integer; 
BEGIN 
    SELECT COUNT(*)as result 
    INTO con FROM USER_TABLES where table_name ='TXN_TEMP_TABLE'; 

    IF(con = 1) 
    THEN 
    BEGIN 
    DROP TABLE TXN_TEMP_TABLE1; 
    END; 
    END IF; 
END; 

我試圖刪除表,如果它已經存在,但是這種查詢是引發錯誤。

+0

當問一個關於查詢或代碼,拋出一個錯誤的問題,它是幫助你提供收到錯誤的全文。 – unleashed

回答

0

您可以使用EXECUTE IMMEDIATE執行DDL:

DECLARE 
    con integer; 
BEGIN 
    SELECT COUNT(*) 
    INTO con 
    FROM USER_TABLES 
    where table_name ='TXN_TEMP_TABLE'; 

    IF con = 1 THEN 
     execute immediate 'DROP TABLE TXN_TEMP_TABLE'; 
    END IF; 
END; 
+0

嘗試了此查詢,但它引發錯誤:ORA-14452:嘗試創建,更改或刪除已在使用的臨時表上的索引。是否因爲txt_temp_table是第一個查詢的範圍?我試過BEGIN END;對於這兩個查詢,但仍然不起作用 –

+0

@iSahilSharma:錯誤的原因很簡單,操作是:使用會話特定的臨時表的所有會話都必須截斷表,並且使用特定於事務的臨時表的所有事務都必須結束他們的交易 – JSapkota