Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

PL/SQL:reescrever a instrução SELECT usando o parâmetro IN no procedimento armazenado


Você precisaria usar a mesma abordagem SQL dinâmica que foi sugerida em sua outra pergunta
PROCEDURE get_stat (gender IN VARCHAR2) 
AS
    v_sql   varchar2(1000);
    v_param varchar2(100) := 'AVG_WEIGHT';
    v_stat  number;
BEGIN
    v_sql := 'SELECT ' || gender || ' FROM survey WHERE parameter = :1';
    EXECUTE IMMEDIATE v_sql
                 INTO v_stat
                USING v_param;
END get_stat;

Mas você teria as mesmas objeções gerais que foram levantadas em sua pergunta anterior - o modelo de dados é fundamentalmente falho. Você seria muito melhor servido com uma linha separada para MALE e FEMALE resultados da pesquisa em vez de ter colunas separadas para male e female resultados.