Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

PL/SQL - Como usar um array em uma cláusula IN


Para usar a coleção definida como uma tabela aninhada ou um array associativo no from cláusula de uma consulta, você deve, como @Alex Poole apontou corretamente, criar um tipo de nível de esquema (SQL) ou usar um, que está disponível para você através de ODCIConst pacote - odcidatelist como você pretende usar uma lista de datas. Por exemplo, sua definição de cursor pode ter esta aparência:
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))

OU
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)

Observação:você deve levar em consideração a parte do tempo de uma data ao realizar uma comparação de datas. Se você quiser comparar apenas a parte da data, provavelmente seria útil se livrar da parte do tempo usando trunc() função.