#oracle
#Oracle
Вопрос:
Я хочу создать хранимую процедуру, которая выполняет поиск Oracle. Поиск Oracle, который я хочу выполнить, является:
SELECT ID, score(1) from TABLE
WHERE CONTAINS(column, 'fuzzy(%Item_to_be_searched%)', 1) > 0
order by score(1) DESC;
Хранимая процедура имеет параметр Item_to_be_searched
и должна возвращать ID
amp; Score
.
Когда я пытаюсь создать процедуру, возникает ошибка:
PLS-00222: в этой области не существует функции с именем ‘SCORE’ PL/ SQL: ORA-00904: : недопустимый идентификатор
Кто-нибудь знает, можно ли использовать score в хранимой процедуре?
Комментарии:
1. Он рассматривает оценку (1) как функцию. почему вы используете score (1) вместо score?
2. Я использовал эту метку, но если используется только 1 предложение contains, оно избыточно. Я пробовал без (1), и теперь это работает. Спасибо!
3. Функция SCORE может использоваться в любом из этих предложений: SELECT, ORDER BY или GROUP BY. Значение, указанное для LABEL, является тем же значением, которое определено аргументом LABEL в функции CONTAINS, которая сгенерировала оценки, и на которое ссылается функция SCORE во всех других предложениях. Если в инструкции SELECT используется только одна функция CONTAINS, параметр LABEL в предложении CONTAINS не требуется, но будет сгенерировано значение метки SCORE, равное нулю (0). Затем все остальные предложения должны ссылаться на ОЦЕНКУ (0) или ОЦЕНКУ (*).