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

PL/SQLクエリINコンマデリミテッド文字列

    バインド変数はaをバインドします 値。この場合、文字列「45,4932,20,19」。 Randyが提案したように、動的SQLと連結を使用できますが、ユーザーがこの値を変更できないように十分に注意する必要があります。そうしないと、SQLインジェクションの問題が発生します。

    より安全な方法は、PL/SQLプロセスのApexコレクションにIDを配置することです。

    declare
        array apex_application_global.vc_arr2;
    begin
        array := apex_util.string_to_table (:P5_USER_ID_LIST, ',');
        apex_collection.create_or_truncate_collection ('P5_ID_COLL');
        apex_collection.add_members ('P5_ID_COLL', array);
    end;
    

    次に、クエリを次のように変更します。

    SELECT * FROM users u WHERE u.user_id IN 
    (SELECT c001 FROM apex_collections
     WHERE collection_name = 'P5_ID_COLL')
    


    1. DB::rawとEloquentで同じクエリを使用した場合の異なる結果

    2. pgAdminを使用してPostgreSQL関数をデバッグします

    3. MySQLインデックス名と外部キー名は、テーブルごとに異なる必要がありますか?

    4. BIGINT(8)はMySQLが格納できる最大の整数ですか?