Отправленный вами запрос имеет символ @, который не является символом замены по умолчанию для переменных в Oracle, как в SQL-Server, если вы не использовали что-то вроде
SET DEFINE @
и ставить кавычки при передаче строкового литерала. Не уверен, что вы используете его таким образом.
Я бы предложил вам использовать переменную связывания с префиксом двоеточия :
По вашему вопросу
Мне нужно вернуть 'YY'
для no rows selected
, вы можете поместить свой блок case в агрегатную функцию, такую как MAX
, которая будет возвращать строку с null
, а COALESCE
может обработать нули, чтобы дать вам желаемое значение когда нет строк.
SELECT
COALESCE(
MAX(
CASE
WHEN t.column1 =:column1 THEN 'XX'
ELSE 'YY'
END
),'YY')
FROM
table1 t
WHERE
t.column2 =:column2;