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

Cómo establecer parámetros de consulta con comillas simples

Parámetro con nombre [to] no existe porque pones :to entre comillas simples. Usa :to en lugar de ':to' .

Dicho esto, esto no funcionará de todos modos. Enfrenté un problema realmente similar y después de algunas horas finalmente encontré una solución que presento en respuesta aquí . Por alguna razón, cuando interval entra en juego la inyección de parámetros no funciona como cabría esperar.

Teniendo en cuenta la conclusión del enlace anterior, creo que esto debería funcionar:

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