sql >> Base de Datos >  >> RDS >> Oracle

No se permiten espacios después del prefijo de parámetro ':'

Desde mi experiencia te cuento. Hay dos escenarios
1) Desea especificar un parámetro en la consulta cuyo valor se establece dinámicamente.

eg: where user_id = :userId

Aquí no tendrá ningún problema si está configurando un parámetro con el mismo nombre que "userId";
2) Está encasillando el valor

eg: select count(id) :: integer

cuando esté haciendo esto, debe usar el carácter de escape; de ​​lo contrario, Hibernate pensará que es un parámetro. Y dará un error "Todos los parámetros no están establecidos" puede superar esto escribiendo código usando el carácter de escape

eg:select count(id) \\:\\: integer

Así que esto resolverá su problema. Y si se usa incorrectamente la barra inclinada hacia delante en lugar de la barra inclinada hacia atrás, obtendrá el error "no se permite espacio después del prefijo"

Wrong: select count(id)//://: integer
Right: select count(id)\\:\\: integer

Pero te recomiendo enfáticamente que uses la función CAST en lugar de usar "::" esta operación select CAST(count(id) as integer) Es la mejor forma de conversión de tipos y dará lugar a errores mínimos