Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Nach dem Parameterpräfix ':' ist kein Leerzeichen zulässig

Aus meiner Erfahrung werde ich Ihnen sagen. Es gibt zwei Szenarien
1) Sie möchten einen Parameter in der Abfrage angeben, dessen Wert dynamisch festgelegt wird.

eg: where user_id = :userId

Hier werden Sie kein Problem bekommen, wenn Sie Parameter mit dem gleichen Namen wie "userId" setzen;
2) Sie typisieren den Wert

eg: select count(id) :: integer

Wenn Sie dies tun, müssen Sie das Escape-Zeichen verwenden, sonst denkt Hibernate, dass es sich um einen Parameter handelt. Und es wird ein Fehler ausgegeben "Alle Parameter sind nicht gesetzt" Sie können dies umgehen, indem Sie Code mit dem Escape-Zeichen

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

Das wird also Ihr Problem lösen. Und wenn Sie fälschlicherweise einen Schrägstrich anstelle eines Rückwärtsschrägstrichs verwenden, erhalten Sie den Fehler "Leerzeichen ist nach dem Präfix nicht zulässig"

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

Aber ich habe Ihnen dringend empfohlen, die CAST-Funktion anstelle von "::" zu verwenden Dieser Operator select CAST(count(id) as integer) Es ist die bessere Art der Typumwandlung und führt zu minimalen Fehlern