Oracle
 sql >> Datenbank >  >> RDS >> Oracle

PL/SQL:SELECT-Anweisung mit IN-Parameter in gespeicherter Prozedur neu schreiben

Sie müssten denselben dynamischen SQL-Ansatz verwenden, der in Ihrer anderen Frage vorgeschlagen wurde

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;

Aber Sie hätten die gleichen allgemeinen Einwände, die in Ihrer früheren Frage erhoben wurden – das Datenmodell ist grundlegend fehlerhaft. Mit einer separaten Zeile für MALE wären Sie viel besser bedient und FEMALE Umfrageergebnisse, anstatt separate Spalten für male zu haben und female Ergebnisse.