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

PL/SQL-forespørgsel IN kommaafgrænset streng

En bindevariabel binder a værdi, i dette tilfælde strengen '45,4932,20,19'. Du kan bruge dynamisk SQL og sammenkædning som foreslået af Randy, men du skal være meget forsigtig med, at brugeren ikke er i stand til at ændre denne værdi, ellers har du et problem med SQL Injection.

En mere sikker rute ville være at lægge ID'erne ind i en Apex-samling i en PL/SQL-proces:

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;

Skift derefter din forespørgsel til:

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


  1. Er det muligt at bruge Couch DB eller MySql eller enhver anden DB i Android?

  2. Hvordan bestemmer man, hvad der er mere effektivt:DISTINCT eller HVOR FINNES?

  3. Sådan udfyldes manglende datoer i PostgreSQL ved hjælp af generate_series

  4. Højt niveau Postgres er løbet ned af INSERT/UPDATE hastighed?