2016-05-21 1 views
1

У меня есть ниже запрос с Oracle точки запроса зрения является то, что я создал ограничение на таблицу BOA_INVOICE, как показано нижеConstraint определение не правильно вставлено запрос в Oracle

ALTER TABLE BOA_INVOICE 
    ADD CONSTRAINT CK_INVOICE_SOURCE_SYSTEM 
     CHECK (SOURCE_SYSTEM IN ('PCE', 'PDS', 'WALLSTREET', 'SYSTEM X & ECOTRADE')); 

Теперь это ограничение успешно добавлен для таблица BOA_INVOICE, но проблема в том, что, когда я вижу определение ограничений в разработчика Oracle показано, как показано ниже

SOURCE_SYSTEM IN ('PCE', 'PDS', 'WALLSTREET', 'SYSTEM X null') 

Теперь, когда я внимательно наблюдать за последнее значение было SYSTEM X & ECOTRADE, но в определение ограничения в разработчике оракула я могу видеть, что оно отображается как SYSTEM X null.

Пожалуйста, посоветуйте, как я могу это исправить, чтобы SYSTEM X & ECOTRADE в определении ограничения

+0

http://stackoverflow.com/questions/118190/how-do-i-ignore-ampersands-in-a-sql-script-running-from-sql-plus – OldProgrammer

ответ

0

Проблема не Oracle, сам по себе - это SQL * Plus. & используется для указания SQL * Plus, что вы назначаете параметр, а его присутствие в строке запутывает SQL * Plus.

Существует два способа обхода проблемы. Сначала вы можете использовать SET DEFINE OFF, чтобы сообщить SQL * Plus, что вы не используете именованные параметры, и он должен просто обрабатывать &, как и любой другой символ.

Другой способ сделать это, чтобы положить & в качестве последнего символа в строке, а затем сцепить остаток строки к первой, как в

ALTER TABLE BOA_INVOICE 
    ADD CONSTRAINT CK_INVOICE_SOURCE_SYSTEM 
     CHECK (SOURCE_SYSTEM IN ('PCE', 'PDS', 'WALLSTREET', 'SYSTEM X &' || ' ECOTRADE')); 

удачи.

Смежные вопросы