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

So setzen Sie Abfrageparameter mit einfachen Anführungszeichen

Parameter mit dem Namen [to] existiert nicht, weil Sie :to gesetzt haben zwischen einfachen Anführungszeichen. Verwenden Sie :to statt ':to' .

Davon abgesehen wird dies sowieso nicht funktionieren. Ich stand vor einem wirklich ähnlichen Problem und fand nach einigen Stunden endlich eine Lösung, die ich hier als Antwort vorstelle . Aus irgendeinem Grund, wenn interval ins Spiel kommt Die Parameterinjektion funktioniert nicht wie erwartet.

In Anbetracht der Schlussfolgerung aus dem obigen Link - ich glaube, das sollte funktionieren:

@Transactional(propagation = Propagation.REQUIRES_NEW)
@Modifying
@Query(value = "UPDATE transactionlog SET transactionstatus= :ps,
       startedat = CURRENT_TIMESTAMP, 
       readytoprocessat= (CURRENT_TIMESTAMP + (( :to ) || 'second')\\:\\:interval)
       WHERE logid IN (:li) ",nativeQuery = true)
public Integer reserve(@Param("ps") short processingStatus, @Param("li") List<Integer> logIdList, @Param("to") int timeOut);