sql >> Database >  >> RDS >> Oracle

Hoe bind ik een ArrayList aan een PreparedStatement in Oracle?

U kunt een lijst niet binden aan een enkele parameter in een voorbereide instructie.

Genereer SQL met de a-parametermarkering voor elk element in de lijst, bijvoorbeeld:

SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)

Ook al genereert u voor elke zoekopdracht een nieuwe instructie, toch raad ik u aan een PreparedStatement te gebruiken . Als uw lijst String . bevat In sommige gevallen krijgt u de nodige ontsnappingen om te beschermen tegen SQL-injectie.

Maar zelfs als het een veilig type is, zoals Integer objecten, sommige stuurprogramma's of middleware kunnen PreparedStatements cache cachen , en retourneer een exemplaar in de cache als hetzelfde formulier wordt aangevraagd. Natuurlijk zouden er wat testen nodig zijn. Als uw lijsten sterk in grootte verschillen, zult u veel verschillende verklaringen hebben, en een slecht geïmplementeerde cache is misschien niet voorbereid om zoveel te verwerken.



  1. MySQL Cloud Back-up en herstelscenario's met Microsoft Azure

  2. Verzamel recursieve JSON-sleutels in Postgres

  3. Hoe de querycache in mysql wissen?

  4. Orakel Juliaanse dag van het jaar