Предположим, у меня есть база данных Oracle 11.2, содержащая следующую таблицу:
TABLE: SURVEY
PARAMETER MALE FEMALE
--------------------------
SAMPLE_SIZE 102 95
AVG_WEIGHT 170 120
AVG_HEIGHT 5.9 5.4
Вот пример минимальной хранимой процедуры PL / SQL, которая выбирает средний вес мужчин и помещает его (например, 170) в переменную v_stat
.
PROCEDURE get_stat (gender IN VARCHAR2)
AS
v_stat number;
BEGIN
SELECT male INTO v_stat FROM survey WHERE parameter = 'avg_weight';
END get_stat;
Обратите внимание, что параметр IN gender
здесь ничего не делает.Я хочу передать переменную gender
, которая может равняться либо «мужчине», либо «женщине», и каким-то образом использовать gender
в операторе SELECT (вместо «мужского»).Цель состоит в том, чтобы передать gender
в качестве переменной, которая может использоваться, например, для получения среднего веса, как мужского, так и женского пола, как определено gender
.
Я знаю, что, вероятно, могу использовать оператор IF / THEN / ELSE с двумя отдельными инструкциями SELECT, но мне было интересно, существует ли элегантный способ использовать только один оператор SELECT, изменив «мужской» в приведенном выше операторе SELECTк чему-то еще?
Обратите внимание, что это повторение моего предыдущего вопроса здесь
Как программно установить имя таблицы в PL / SQL?
это было (справедливо) подвергнуто критике за то, что оно не было реалистичным вопросом.