2013-12-02 3 views
1

Как использовать функцию, определенную пользователем как логическое выражение?Использование функции, определяемой пользователем как логическое выражение

Например, функция REGEXP_LIKE() используется в качестве логического выражения, правильно?

... WHERE REGEXP_LIKE() ...

Но как сделать такой для пользовательской функции? Когда моя функция возвращает тип BOOLEAN, а затем, когда я вызываю эту функцию, я получил ошибку, потому что чистый SQL не может использовать тип BOOLEAN.

P.S.

Итак, я делаю это: моя функция возвращает VARCHAR2 типа: который 'TRUE' или 'FALSE', а затем в SQL я использую: ... WHERE my_function() = 'TRUE' ...

Это правильный путь для SIMULATE логического типа? или существуют более лучшие решения?

ответ

1

№ Это может сбивать с толку в Oracle, но SQL НЕ знает булевский тип данных, хотя он имеет дело с булевыми выражениями. В отличие от процедурного PL/SQL, где может использоваться логический тип данных.

В Oracle SQL и PL/SQL оцениваются различными двигателями. Эти двигатели используют похожие типы данных, но не то же самое.

+0

Итак, в SQL, имитирующем логический тип с использованием varchar, то есть: 'WHERE my_function() = 'TRUE'' является обычным способом? – RIKI

+0

Да. Вы даже можете создать свой собственный «оператор» в Oracle. Но даже оператор работает одинаково. – ibre5041

+0

Возможно, когда вы вернете из своей функции 'NUMBER' вместо' VARCHAR2', это будет немного быстрее. – ibre5041

Смежные вопросы