Tom,
>Thanks David for an answer with some real help in it! :)
I agree with the other comments about Web programming forcing you to wrestle out the issues with stateless programming.
Take a typical project that you have worked on recently, and draw up a plan for a web interface on it, keeping in mind that every action the user takes that results in a "hit" to the web server cannot count on open tables, select areas, environment settings, record pointers, memory variables back on the server.
You'll quickly find your thinking changing to how to pass all needed info with every hit, and how to persist progressively-built processes (such as multiple steps in a wizard) into a table or XML fragments, identified by a unique ID passed with the hit in the URL or via a cookie.
It's quite similar to "black-box" routines that do not count on any open tables, but handle everything encapsulated inside the procedure, with all necessary info passed in as parameters.