In Haskell, function arguments are separated simply by spaces, so if you had a function defined as
runQuery queryName param1 param2 = <implementation>
You would have a function of three arguments called runQuery with the arguments queryName, param1, and param2. You would then pass in arguments in the same syntax:
main = do
(name:param1:_) <- getArgs
param2 <- getLine
runQuery name param1 param2
Here we are calling the function runQuery with the arguments name, param1, and param2, which were obtained from getArgs and getLine.
Note that the : character is an operator, it has nothing to do with function call syntax, and its purpose is the construct a new list by prepending an element to the front of an existing list. Since it is a constructor as well, it can be used for pattern matching, hence its use in (name:param1:_) <- getArgs. The _ is a wildcard pattern that matches anything, so it is taking the place of "the rest of the args passed in at the command line".
You seem to also be confused about scoping in Haskell. I would highly recommend you read some tutorials on beginning Haskell, my favorite is Learn You a Haskell For Great Good, to become more familiar with the basic syntax and language rules of the language before attempting more complicated programs.