2016-06-06 10 views
2

Ich bekomme diesen Fehler auf die folgende Abfrage. Die Abfrage ist eine Einschränkungbekommen 'FROM' Fehler in Oracle-Abfrage

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

FEHLER in Zeile zu ändern 1:

ORA-00923: FROM keyword not found where expected 

Bitte beraten, wie diese zu überwinden, wenn ich die obige Abfrage von SQL/nolog

+4

Beachten Sie die Farben Ihrer Aussage, die Sie besser in den Griff benötigen zitiert und/oder Verkettung. Sind 'RTK_TYUVOICE_SYSTEM' und' IOA_WRTYOICE' Variablen? – Aleksej

+0

Sie beginnen eine Zeichenfolge mit ''' Dann haben Sie auf halbem Weg durch diese Zeichenfolge ein anderes '' '. Aber du bist ihm nicht entkommen, und alles was du getan hast ist, die Saite früh zu beenden. Alles, was dieser Sekunde folgt, wird dann zu einem Problem für dich. Also, entkomme all den '' ', die sich in deiner Zeichenfolge befinden. – MatBailie

+0

Was meinst du mit 'sql/nolog'? Möchten Sie eine Abfrage ausführen, ohne sich bei der DB anzumelden? – Aleksej

Antwort

0

Entweder doppelten Anführungszeichen ausführen in der Zeichenfolge

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

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

oder verwenden Sie die (von 10 g) quoted string

0

Sie versuchen, eine Einschränkung mit einer Anweisung zu ändern, die ich hoffe, und nicht nur Ihre Aussage drucken möchten.

In diesem Fall müssen Sie die Execute Immediate-Anweisung verwenden, die dabei hilft, DDL-Anweisungen während einer Prozedur in Echtzeit auszuführen.

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

Jede gültigen DDL-Anweisung (wie erstellen, ändern Drop usw.) kann in der EXECUTE IMMEDIATE-Anweisung zusammengedrückt werden, deren korrekte syntaktische Bildung verwenden.

Alternativ können Sie nur erwähnen, wenn die gegebene SQL statisch ist, als

ALTER TABLE ANAL2 DROP CONSTRAINT SYS_C008611