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

Como faço para vincular um ArrayList a um PreparedStatement no Oracle?


Você não pode vincular uma lista a um único parâmetro em uma instrução preparada.

Gere SQL com um marcador de parâmetro para cada elemento na lista, por exemplo:
SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)

Mesmo que você gere uma nova instrução para cada consulta, ainda recomendo usar um PreparedStatement . Se sua lista contém String instâncias, você obterá o escape necessário para se proteger da injeção de SQL.

Mas mesmo que seja um tipo seguro, como Integer objetos, alguns drivers ou middleware podem armazenar em cache PreparedStatements e retornar uma instância em cache se o mesmo formulário for solicitado. Claro, alguns testes seriam necessários. Se suas listas variam muito em tamanho, você terá muitas instruções diferentes, e um cache mal implementado pode não estar preparado para lidar com tantas.