在oracle查询中收到'FROM'错误

时间:2016-06-06 09:17:43

标签: sql oracle

我在以下查询中收到此错误。查询是修改约束

SELECT 'EXEC DROP_CONSTRAINTS('RTK_TYUVOICE_SYSTEM','IOA_WRTYOICE');' FROM DUAL
                                                   *

第1行的错误:

ORA-00923: FROM keyword not found where expected

当我从sql / nolog

执行上述查询时,请告知如何克服这个问题

2 个答案:

答案 0 :(得分:0)

字符串中的双引号

SELECT 'EXEC DROP_CONSTRAINTS(''RTK_TYUVOICE_SYSTEM'',''IOA_WRTYOICE'');' as txt FROM DUAL;

TXT                                                        
------------------------------------------------------------
EXEC DROP_CONSTRAINTS('RTK_TYUVOICE_SYSTEM','IOA_WRTYOICE'); 

或使用(来自10g)quoted string

SELECT q'[EXEC DROP_CONSTRAINTS('RTK_TYUVOICE_SYSTEM','IOA_WRTYOICE');]' as txt FROM DUAL;

TXT                                                        
------------------------------------------------------------
EXEC DROP_CONSTRAINTS('RTK_TYUVOICE_SYSTEM','IOA_WRTYOICE');

答案 1 :(得分:0)

您正尝试使用我希望的语句修改约束,并且不打算只打印您的语句。

在这种情况下,您需要使用Execute Immediate语句,这有助于在过程中动态执行DDL语句。

BEGIN
EXECUTE IMMEDIATE 'ALTER TABLE ANAL2 DROP CONSTRAINT SYS_C008611' ;
END;
/

任何有效的DDL语句(如create,alter,drop等)都可以在EXECUTE IMMEDIATE语句中使用正确的语法形式进行压缩。

或者,您可以提一下,如果给定的SQL是静态的,则为

ALTER TABLE ANAL2 DROP CONSTRAINT SYS_C008611