At the risk of suggesting something obvious, have you read the docs?
http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/RelationalDataba... http://www.zope.org/Documentation/Guides/ZSQL-HTML/ZSQL.html
I suspect what you're missing is that you're trying to re-create stuff that Zope already does for you. Only in specific cases is explicit "passing" required. I don't sense that yours is one of them.
Actually, I am positively drowning in the docs, which is part of the problem. Between the official Zope docs, the "Book of Zope" from Beehive, and the tons of informal user-created documentation on the net, there are no less than 50 answers for any question. Thanks for the explicit links rather than just a blind 'RTFM', for sure, though. I suspect my bad habits are coming from my scripty background rather than anything else. I am spoiled by creating and discarding variables arbitrarily in basically procedural code. So, if I have a mess like: 1. Some DTML stuff to make logical decisions 2. Some unrelated stuff 3. Some more DTML that depends on the decisions made in step 1 In order to find out the result of the decisions made in step 1 when I am in step 3, I want to look at the value of some variables. As far as I can tell the only way to keep track of the stuff is in REQUEST. I am, in fact, calling my ZSQL methods with parameters and only in once case relying on REQUEST for that (userid in the database of the current user, using exUserFolder). It's the fact that I am acutally using DTML for a lot of core logic that I am using REQUEST. <dtml-let> absolutely will not work for me as the variables need to span a bunch of <dtml-in> and <dtml-if> blocks. Reading my own responses in the thread here, I realize that I am showing myself to be a complete noob who probably shouldn't be even allowed to use the py interpreter. Hrmph. Thanks for the insight, all.