2016-05-21 11 views
1
にクエリによって挿入されていない

IビューのOracleのクエリ点から以下のクエリは今、この制約は、のために正常に追加され制約定義が適切オラクル

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

以下のように私はテーブルBOA_INVOICE上の制約を作成していることである持っていますテーブルBOA_INVOICEが、問題は、私はオラクルの開発者で制約定義を見ると今

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

以下のように、私は慎重に最後の値だったSYSTEM X & ECOTRADEけどで観察したときにそれが表示されていることですOracleの開発者の制約の定義は、 SYSTEM X nullと表示されていました。

私は制約定義

+0

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

答えて

0

問題は、Oracleではない、それ自体でSYSTEM X & ECOTRADEにこれを修正する方法を教えてください - それはSQL * Plusのです。 &は、SQL * Plusにパラメータの名前を指定していることを伝えるために使用され、文字列内にSQL * Plusが混在しています。

2つの回避策があります。まず、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')); 

のように、最初の1に残りの文字列を連結した後、文字列の最後の文字として&を置くことです。

関連する問題