Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zapytanie PL/SQL W ciągu oddzielonym przecinkami

Zmienna bind wiąże a wartość, w tym przypadku ciąg '45,4932,20,19'. Możesz użyć dynamicznego SQL i konkatenacji zgodnie z sugestią Randy'ego, ale musisz być bardzo ostrożny, aby użytkownik nie mógł zmienić tej wartości, w przeciwnym razie masz problem z wstrzyknięciem SQL.

Bezpieczniejszą drogą byłoby umieszczenie identyfikatorów w kolekcji Apex w procesie PL/SQL:

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;

Następnie zmień zapytanie na:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przeanalizuj xmltype do tabeli po przestawieniu xml

  2. Oracle — Wybierz, gdzie pole zawiera małe litery

  3. Czy mogę dołączyć do różnych źródeł danych w SSRS?

  4. Kolekcja Oracle w klauzuli gdzie

  5. Co to są widoki zmaterializowane?