2017-04-07 34 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