SQL Query - функции, введенные в запрос, будут оцениваться Oracle - PullRequest
0 голосов
/ 11 октября 2018

Я хотел бы знать, есть ли шансы выполнения функций SQL extractvalue() и xmltype() в следующем запросе или они будут оцениваться как строковое значение оператором IN.

SELECT * FROM TABLE_1 WHERE (FIELD_1 IN ('foo','bar''||(select extractvalue(xmltype(''%gxgol;]>''),''/l'') from dual)||'''))

Этот запрос не вызывает ошибок в Oracle, и выходные данные содержат только строки, в которых FIELD_1 равно 'foo'.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Нет, содержимое строкового литерала не будет выполнено.К счастью.

Вам нужен настоящий подзапрос.Что-то вроде:

SELECT *
FROM TABLE_1
WHERE FIELD_1 IN (
    SELECT 'foo' FROM DUAL
    UNION ALL
    SELECT 'bar' || extractvalue(bla,bla) FROM DUAL)
0 голосов
/ 11 октября 2018

Если вы вызываете их через

, выполняйте немедленно

, да, они будут приняты как функции.

для получения дополнительной информации https://docs.oracle.com/cd/B13789_01/appdev.101/b10807/13_elems017.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...