It seems like you can define "procedures" in org-mode and call them from elsewhere, with args.
But I'm not sure how well-defined that process is; the documentation is not completely perfect yet I think.  Here's one thing I'm trying that seems not to work.

I define a "procedure" as a named ref called recorddate with two args, ver and order.  The idea is I could later call that with different values of those args.

#+NAME: recorddate(order="desc")
#+BEGIN_SRC sql :exports none :colnames no :results scalar
select Event.CreatedAt from Event join MachineInfo as MI on Event.MachineInfoId=MI.Id
 where Event.CreatedAt is not NULL order by CreatedAt $order limit 1;
#+END_SRC sql

(BTW, I really like how $ vars are substituted into SQL.  Nice.)  But when I try to call it like this:

 * earliest record is call_recorddate(ver="'.'", order="asc")
or like this:
 #+CALL: recorddate(ver="'.'", order="asc")

and I try to export as LaTeX (or anything), I get 
 org-babel-ref-resolve: Reference 'recorddate' not found in this buffer

Is this supposed to work?

--
Gary