Oracle 如何修复';ORA-29909:辅助操作员的标签不是文字数字';有界变量?

Oracle 如何修复';ORA-29909:辅助操作员的标签不是文字数字';有界变量?,oracle,contains,oracle-text,Oracle,Contains,Oracle Text,Oracle文本上下文索引列的以下SQL运行: variable label number; exec :label := 1; SELECT * FROM TEST_TABLE WHERE CONTAINS(INDEXEDCOL, 'token', :label) > 0; 结果: Error report: SQL Error: ORA-29909: label for the ancillary operator is not a literal numbe

Oracle文本上下文索引列的以下SQL运行:

variable label number;
exec :label := 1;
SELECT * FROM TEST_TABLE 
           WHERE CONTAINS(INDEXEDCOL, 'token', :label) > 0;
结果:

Error report:
SQL Error: ORA-29909: label for the ancillary operator is not a literal number
29909. 00000 -  "label for the ancillary operator is not a literal number"
*Cause:    The label used for invoking the ancillary operator is not
           a literal number.
*Action:   Use a literal number as the label.
我在这里发现了一个类似的问题:

但在我的情况下,使用以下命令更改光标没有帮助:

ALTER SESSION SET cursor_sharing='EXACT';
还有一个问题:

但答案并不适用。
我正在使用Oracle 11.2.0.3.0

我看不到任何直接的方法来解决这个问题。您可以通过使用动态SQL来解决这个问题,也可以将动态SQL包装到一个流水线函数中。虽然这对用户不是很友好。谢谢!这是JPA CriteriaQuery谓词p=cb.gt(cb.function(“CONTAINS”、Integer.class、path、cb.literal(“token”)、cb.literal(1))、0)的结果;所以我的选择相当有限。