sql >> Database >  >> RDS >> Oracle

PL/SQL - Een array gebruiken in een IN-clausule

Om een ​​collectie te gebruiken die is gedefinieerd als een geneste tabel of een associatieve array in de from clausule van een query moet u ofwel, zoals @Alex Poole terecht opmerkte, een type op schemaniveau (SQL) maken of er een gebruiken, die voor u beschikbaar is via ODCIConst pakket - odcidatelist aangezien u van plan bent een lijst met datums te gebruiken. Uw cursordefinitie kan er bijvoorbeeld als volgt uitzien:

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

OF

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)

Opmerking:u moet rekening houden met het tijdsgedeelte van een datum bij het uitvoeren van een datumvergelijking. Als u alleen het datumgedeelte wilt vergelijken, is het waarschijnlijk handig om het tijdgedeelte te verwijderen door trunc() te gebruiken functie.



  1. Oracle SQL-query voor records met een tijdstempel dat tussen twee tijdstempels valt

  2. LISTEN/NOTIFY met pg_notify(text, text) in PostgreSQL

  3. mysql voegt tabellen samen en creëert ontbrekende datums

  4. SQL-injectie in Node.js voorkomen