in reply to Placeholder Error (Placeholder :0 invalid, placeholders must be >= 1)

Presumably, you have a ":0" in your interpolated $tdate (resulting from something like 01/14/2011 00:00:00) which is being interpreted as an enumerated/named placeholder by DBD::Oracle.

So, don't interpolate the date into your procedure, but use a placeholder (e.g. ->bind_param(':DATE' => $tdate)) in the first place.