Oracle
 sql >> Base de données >  >> RDS >> Oracle

L'espace n'est pas autorisé après le préfixe de paramètre ':'

D'après mon expérience, je vais vous dire. Il existe deux scénarios
1) Vous souhaitez spécifier un paramètre dans la requête dont la valeur est définie dynamiquement.

eg: where user_id = :userId

Ici, vous n'aurez aucun problème si vous définissez un paramètre avec le même nom que "userId" ;
2) Vous transtypez la valeur

eg: select count(id) :: integer

lorsque vous faites cela, vous devez utiliser le caractère d'échappement, sinon l'hibernation pensera qu'il s'agit d'un paramètre. Et cela donnera une erreur "Tous les paramètres ne sont pas définis" vous pouvez surmonter cela en écrivant du code en utilisant le caractère d'échappement

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

Cela résoudra donc votre problème. Et si vous utilisez à tort une barre oblique au lieu d'une barre oblique inverse, vous obtiendrez l'erreur "l'espace n'est pas autorisé après le préfixe"

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

Mais je vous recommande fortement d'utiliser la fonction CAST au lieu d'utiliser "::" cette opération select CAST(count(id) as integer) C'est la meilleure façon de transtyper les types et cela conduira à un minimum d'erreurs