No hay que retornar nada. Si está abierto, lo cerras con close y luego lo abris con open.
He visto un mensaje de error similar al tuyo, en otros motores.
Ocurre cuando el query no retorna un cursor (según dice el propio mensaje)
, que es cuando el query contiene instrucciones como insert/update/delete. En ese caso, en lugar de open (que "abre el query", es decir, procesa el cursor devuelto), se utiliza el método ExecSQL, que ejecuta la sentencia pero no espera obtener un cursor a cambio.
Espero haberme explicado y que de alguna ayuda te sirva.
Hasta luego.