garbled circuit vs fully homomorphic encryption Consider an outsourced database to an untrusted cloud (think CryptDb), the question is how to compute a function $f(.)$ on the data. 

I think I understand how (fully or partially) homomorphic encryption works in this situation: 


Encrypt the input.   
Outsource both the ciphertexts and the (public) function.
The cloud evaluates the functions on ciphertexts, results are also in ciphertexts.


How would garbled circuit (GC) be used in this case? Is it:


Garble the circuit and upload to the cloud.
Garble the inputs and upload to the cloud (ciphertexts).
The cloud evaluates the circuit. Results are in plaintext.


What are the trade-offs between these two approaches, supposing I don't care whether the results are in the clear or encrypted? It looks like both can be used to compute arbitrary functions over ciphertexts. 

But if GC can be used only once (true?), is it possible to use the same garbled inputs for more than one GC, or one needs to construct a (GC,garbled input) pair for every single evaluation of the function $f(.)$?
Yes, standard GC are not re-usable, thus by means of GC you may outsource the computation of a single function on a single input (i.e. you delegate a function described by a Boolean circuit and later you may ask the evaluation of the function on a single input not fixed in advance).

Indeed this is the approach to Verifiable Computation proposed in a paper of Gennaro, Gentry, Parno (https://eprint.iacr.org/2009/547). Here, “verifiable” means that you also want a proof that the server computed the input on the expected function. How would you extend this idea to multiple inputs? To this scope the authors employ FHE.

But maybe this goes beyond your question since the aim of the authors is to achieve verifiability. As said in a previous post, re-usable GC have been proposed but they are indeed based on FHE.