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

como passar uma variável na cláusula WHERE IN do oracle sql?


Como Pavanred aludiu, a maneira mais fácil - embora não necessariamente a melhor - é interpolar os valores você mesmo. Você não diz qual é o seu idioma de chamada, mas algo como:
sql = "SELECT something FROM whatever WHERE myColumn in (" + $1 + ")"

No entanto, isso significa que é muito importante que você tenha verificado previamente todos os valores em $1 para certificar-se de que eles são números, ou strings de escape apropriadas, ou qualquer outra coisa que você precise passar, mas não pode ser valores brutos fornecidos por um usuário, para evitar uma injeção de SQL.

A outra opção é torná-lo um processo de duas etapas. Primeiro, insira os valores de $1 em uma tabela temporária e selecione esses valores como uma subconsulta:
WHERE myColumn in (SELECT temp_value FROM temp_table)