Oracle
 sql >> Database >  >> RDS >> Oracle

Come impostare i parametri di query con virgolette singole

Parametro con nome [to] non esiste perché metti :to tra virgolette singole. Usa :to invece di ':to' .

Detto questo, questo non funzionerà comunque. Ho affrontato un problema molto simile e dopo alcune ore ho finalmente trovato una soluzione che presento in risposta qui . Per qualche motivo, quando interval entra in gioco l'iniezione di parametri non funziona come ci si aspetterebbe.

Considerando la conclusione dal link sopra, credo che dovrebbe funzionare:

@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);