sql >> データベース >  >> RDS >> Oracle

PL / SQL:ストアドプロシージャのINパラメータを使用してSELECTステートメントを書き直します

    他の質問で提案されたものと同じ動的SQLアプローチを使用する必要があります

    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;
    

    しかし、前の質問で提起されたのと同じ一般的な反対意見があります。データモデルには根本的な欠陥があります。 MALE用に別の行を用意しておくとはるかに効果的です。 およびFEMALE maleに個別の列を設定するのではなく、調査結果 およびfemale 結果。



    1. 'COLLATE SQL_Latin1_General_CP1_CI_AS'は何をしますか?

    2. WHERE値がGROUPBYを持つINサブクエリであるため、競合状態の問題がないことを更新する方法はありますか?

    3. PDOプリペアドステートメントからクエリを取り戻す

    4. 部分的な単語が一致する複数列のmysql全文検索を行う方法