sql >> Base de Datos >  >> RDS >> Oracle

PL/SQL:reescriba la declaración SELECT usando el parámetro IN en el procedimiento almacenado

Debería usar el mismo enfoque de SQL dinámico que se sugirió en su otra pregunta

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;

Pero tendría las mismas objeciones generales que se plantearon en su pregunta anterior:el modelo de datos es fundamentalmente defectuoso. Sería mucho mejor tener una fila separada para MALE y FEMALE resultados de la encuesta en lugar de tener columnas separadas para male y female resultados.