0

Web アプリケーションでの検索に Oracle Text を使用しています。Data Store と Index を作成して、Oracle Text を構成しました。

これは私のクエリです

select * from PROFILE where CONTAINS(FIRST_NAME,:firstName OR :secondName,1)>0;

次の例外が発生するたびにORA-00907: missing right parenthesis.

しかし、任意の文字列で置き換えた後、:firstName完全:secondNameに機能しています。

また、1つのパラメーターで完全に機能します。
select * from PROFILE where contains(FIRST_NAME,:firstName,1)>0

上記のコードは機能しています。しかし、 を追加OR :secondNameした後の結果はORA-00907

4

2 に答える 2

1

Oracle Textのドキュメントから、CONTAINS3つのパラメータを持つ通常の関数として定義されているようです(最後のパラメータはオプション):

CONTAINS(
         [schema.]column,
         text_query    [VARCHAR2|CLOB]
         [,label       NUMBER])
RETURN NUMBER;

text_queryパラメータは、として解釈される通常の文字列です。したがって、次のように書く必要があります。

select * from PROFILE where contains(FIRST_NAME, :search_query, 1)>0

この場合、キーワードは SQL クエリの一部ではないため、値FOO OR BARを変数にバインドします。search_queryOR

于 2013-06-20T15:07:51.860 に答える
0

使ったほうがいい

select * from PROFILE where CONTAINS(FIRST_NAME,:firstName ,1)>0  
OR CONTAINS(FIRST_NAME,:secondName,1)>0

于 2013-06-20T17:42:13.000 に答える