If you are on version 9.x you can overload functions and stored procedures. For example, you could have:
a(p1)
a(p1,p2)
a(p1,p2,p3)
The versions that get's called depends on the number of parameters that you pass.
This doesn't work if someone decides they want a(p1,p3).
My suggestion, slap your programmers and have them pass a token you can check.