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

Não é permitido espaço após o prefixo do parâmetro ':'


Da minha experiência eu vou te dizer. Existem dois cenários
1) Você deseja especificar um parâmetro na consulta cujo valor seja definido dinamicamente.
eg: where user_id = :userId

Aqui você não terá nenhum problema se estiver definindo o parâmetro com o mesmo nome de "userId";
2) Você está digitando o valor
eg: select count(id) :: integer

quando você está fazendo isso, você deve usar o caractere de escape, caso contrário, o hibernate pensará que é um parâmetro. E dará um erro "Todos os parâmetros não estão definidos " você pode superar isso escrevendo código usando o caractere de escape
eg:select count(id) \\:\\: integer

Portanto, isso resolverá seu problema. E se você for usado incorretamente a barra invertida em vez da barra invertida, receberá o erro "espaço não é permitido após o prefixo"
Wrong: select count(id)//://: integer
Right: select count(id)\\:\\: integer

Mas eu recomendo que você use a função CAST em vez de usar "::" este operador select CAST(count(id) as integer) É a melhor maneira de conversão de tipos e levará a erros mínimos