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

PL/SQL - Come utilizzare un array in una clausola IN

Per utilizzare la raccolta definita come una tabella nidificata o un array associativo in from clausola di una query dovresti, come ha correttamente sottolineato @Alex Poole, creare un tipo a livello di schema (SQL) o usarne uno, che è disponibile tramite ODCIConst pacchetto - odcidatelist poiché intendi utilizzare un elenco di date. Ad esempio, la definizione del tuo cursore potrebbe essere simile a questa:

cursor DataCursor_Sort(p_brth_dt in sys.odcidatelist) is
  select *
    from sourceTable 
   where a.brth_dt IN (select column_value 
                         from table(p_brth_dt))

O

cursor DataCursor_Sort(p_brth_dt in sys.odcidatelist) is
  select s.*
    from sourceTable      s
    join table(p_brth_dt) t
      on (s.brth_dt = t.column_value)

Nota:è necessario prendere in considerazione la parte temporale di una data quando si esegue un confronto di date. Se vuoi confrontare solo la parte della data, probabilmente sarebbe utile eliminare la parte del tempo usando trunc() funzione.