ORA-29902:执行ODCIIndexStart()例程时出错ORA-20000:Oracle文本错误:DRG-50901:第1行第19行的文本查询解析器语法错误

时间:2014-11-05 12:36:52

标签: oracle text

SELECT person_no sub_sys_individual_id,
 nm_e,
 nm_a,
 nvl(sex, -1) sex,
nvl(prs_nat, -999) prs_nat,
person_no,
'NA' prog_where_not_allowed,
'NA' udb_no,
 person_tp,
 pass_no
FROM ban_inq_tab
WHERE contains (nm_e ,'xxstart JUHETI BT MEMED ASMANI%') >0
AND (trans_flag IS NULL OR trans_flag = 'C');

请帮助我解决此问题并获取解析器语法错误

3 个答案:

答案 0 :(得分:0)

错误导致BT,这是一个保留字。该解决方案在Oracle Community forum中描述。

答案 1 :(得分:0)

你必须逃避BT特殊字(但你可以逃脱整个字符串)。

SELECT person_no sub_sys_individual_id,
 nm_e,
 nm_a,
 nvl(sex, -1) sex,
nvl(prs_nat, -999) prs_nat,
person_no,
'NA' prog_where_not_allowed,
'NA' udb_no,
 person_tp,
 pass_no
FROM ban_inq_tab
WHERE contains (nm_e ,'{xxstart JUHETI BT MEMED ASMANI}%') >0
AND (trans_flag IS NULL OR trans_flag = 'C');

答案 2 :(得分:0)

仅供参考,如果你有一个存储过程的输入参数,那么你也会得到这个错误(我在Oracle 12.2上),这个参数将作为一个包含谓词的查询作为NVARCHAR2。 因此,如果您将存储过程中的params作为NVARCHAR2输入并且该参数的目的地是包含谓词中的查询,则将其更改为VARCHAR(或者可能是CLOB),它将不再抛出此错误。