我有以下SQL語句。在多個表和連接上進行Oracle文本搜索
select emp_no,dob,dept_no from v_depts
where catsearch (emp_no,'abc',NULL) > 0
or
catsearch (dept_no,'abc',NULL) > 0
其中v_depts
是視圖。
現在我想添加一個或多個表作爲連接,以便我可以在列 employee_details
包含員工信息,我可以用emp_no
我已經創建的索引上employee_details
表emp_name
列加入,但我不能與v_depts加入搜索,因爲我修改我的SQL語句作爲
select a.emp_no,a.dob,a.dept_no from v_depts a left outer join employee_details b
on (a.emp_no = b.emp_no)
where catsearch (a.emp_no,'abc',NULL) > 0
or
catsearch (a.dept_no,'abc',NULL) > 0
or
catsearch (b.emp_name,'abc',NULL) > 0
它給了我錯誤
ORA-20000: Oracle Text error:
DRG-10849: catsearch does not support functional invocation
DRG-10599: column is not indexed
即使我已經在
employee_details
表創造了EMP_NAME列索引
。我怎麼解決這個問題?
爲EMP_NAME
CREATE INDEX IDX_EMP_DETAILS ON EMPLOYEE_DETAILS(EMP_NAME)INDEXTYPE IS CTXSYS.CTXCAT
你怎麼沒有得到'列明確定義'錯誤?在'SELECT'列表的查詢中'emp_no'之前沒有表別名前綴,並且'emp_no'作爲參數傳遞給'catsearch'。你確定你得到的錯誤是由'catsearch(b.emp_name,'abc',NULL)> 0'造成的嗎?如果你刪除該行,它是否工作? –
@PrzemyslawKruglej我修改了問題並添加了別名,在輸入問題時錯過了。如果我刪除'catsearch(b.emp_name,'abc',NULL)> 0',那麼它確實返回結果。 – user75ponic
您可以添加您爲創建emp_name列的索引而創建的CREATE INDEX語句嗎? –