PL SQL + SQL простой оператор с использованием переменных подстановки

Я хочу создать простой IF THEN ELSE PL SQL без создания анонимного блока, как показано ниже для использования в SQL TOOLS:

variable a varchar2(20) 
variable b varchar2(20) 

EXEC :a := '&insert_value_a'
EXEC :b := '&insert_value_b'

- в следующей части я не знаю, как это сделать:

ЕСЛИ значение: дается, и это не NULL THEN

EXECUTE
SELECT column1,column2,column3 
FROM table
WHERE condition
AND column2 = :a or column3 = :a;

ELSE

- если задано значение b, используйте его для получения значения:a

EXECUTE
SELECT column2 INTO :a 
FROM table
WHERE column_x = :b;

SELECT column1,column2,column3 
    FROM table
    WHERE condition
    AND column2 = :a or column3 = :a;
END;

1 ответ

Попробуйте использовать NVL, что-то вроде этого:

SELECT column1,column2,column3 
  FROM table
 WHERE condition
   AND column2 = NVL(:a,SELECT column2
                          FROM table
                         WHERE column_x = :b)
    or column3 = NVL(:a,SELECT column2
                          FROM table
                        WHERE column_x = :b);
Другие вопросы по тегам