I tried to call the function with a join() attempting to join @args with commas effectively turning the args into a scalar separated by commas but I couldn't fool the execute command this way.
I've been thinking about this for the past five minutes (waiting on another database), and I cannot find any way where this makes sense to me. If you need four arguments, why would you expect that gyrating to pass only one argument would work? (My best guess is that you see a similarity between "1, 2, 3" and (1, 2, 3) where, semantically, none exists.)
I'm willing to bet that a judicious use of split would solve your problem. I'll even give you two better diagnostics to prove that @args doesn't contain what you think it contains:
local $" = ')(';
print "Results contains: ", scalar( @args ), " elements:\n";
print "(@args)\n";
Update: Replaced @results with @args, as it should have been from the start.