Desta forma funciounou!!!
Connection conn = dataSource.getConnection()
Sql sql = new Sql(conn)
sql.call("DECLARE V_RETORNO CLOB; BEGIN V_RETORNO := FCT_CMD_ABRIR_BLOQ(?,?,?); END;",[equipamento,parada,sentido]) { row -> resultado=row}
Na verdade eu tenho serviços disponibilizados no webservices e cada um deles chama uma função. O serviço chama a função Oracle e retorna um xml para quem o consumiu. Não tenho nenhuma outra utilidade para eles. Tem algum problema se for desta forma?
@Transactional(readOnly = true)
def zerarBloqueio(Integer equipamento, Integer parada, lacreUm, lacreDois){
def resultado
Connection conn = dataSource.getConnection()
Sql sql = new Sql(conn)
sql.call("DECLARE V_RETORNO CLOB; BEGIN V_RETORNO := FCT_CMD_ZERAR_REC_BLOQ(?,?,?,?); END;",[equipamento,parada,lacreUm,lacreDois]) { row -> resultado=row}
return resultado
}
@Transactional(readOnly = true)
def coletarBloqueio(Integer equipamento, Integer parada){
def resultado
Connection conn = dataSource.getConnection()
Sql sql = new Sql(conn)
sql.call("DECLARE V_RETORNO CLOB; BEGIN V_RETORNO := FCT_CMD_COLETAR_BLOQ(?,?); END;",[equipamento,parada]) { row -> resultado=row}
return resultado
}
A logica está nas funções oracle!
Henrique!
Você sabe me dizer qual seria a opção mais favorável no meu caso!
Oi Rafael,
se é uma ação isolada, ou seja, se você apenas precisa executar esta stored procedure e nada mais, a solução que você adotou está ok.