The Tcl portions of the ACS are independent of implementation, Classic or OpenACS. What varies is that Oracle and PostgreSQL do different things under the same circunstances sometimes.
For example, I remember Don or Ben commented sometime ago on the behaviour of NULLs in both flavors of SQL. I think Oracle returns NULLs when a numeric field has nothing in it, whereas PostgreSQL correctly returns a 0 (am I on the right track Ben, Don ?)
If what I said above is true, then your modified empty_string_p makes sense and should be added to the CVS tree.