Oracle
 sql >> Database >  >> RDS >> Oracle

PL/SQL:riscrivere l'istruzione SELECT utilizzando il parametro IN nella procedura memorizzata

Dovresti utilizzare lo stesso approccio SQL dinamico suggerito nell'altra tua domanda

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;

Ma avresti le stesse obiezioni generali che sono state sollevate nella tua domanda precedente:il modello di dati è fondamentalmente imperfetto. Sarebbe molto più utile avere una riga separata per MALE e FEMALE risultati del sondaggio anziché avere colonne separate per male e female risultati.