Oracle
 sql >> Datenbank >  >> RDS >> Oracle

PL/SQL - Verwendung eines Arrays in einer IN-Klausel

Um eine Sammlung zu verwenden, die als verschachtelte Tabelle oder assoziatives Array in from definiert ist -Klausel einer Abfrage sollten Sie entweder, wie @Alex Poole richtig betont hat, einen Typ auf Schemaebene (SQL) erstellen oder einen verwenden, der Ihnen über ODCIConst zur Verfügung steht Paket - odcidatelist da Sie beabsichtigen, eine Datumsliste zu verwenden. Ihre Cursor-Definition könnte beispielsweise so aussehen:

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

ODER

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)

Hinweis:Sie sollten den Zeitteil eines Datums berücksichtigen, wenn Sie einen Datumsvergleich durchführen. Wenn Sie nur den Datumsteil vergleichen möchten, wäre es wahrscheinlich nützlich, den Zeitteil mit trunc() loszuwerden Funktion.