There are several different ways you can pass a temp-table as a parameter between two routines. (For the purposes of this discussion, routine is a generic term that includes external procedures, internal procedures, and user-defined-functions.) It is important that you understand the differences between these ways of passing parameters, because what the AVM does in the background to pass a temp-table from one place to another is complex and involves a considerable amount of overhead that is not visible to your application code directly. After all, a temp-table is not just a single data value. It’s a whole set of rows of data values, packaged up as if it were a database table. Not only that, but the AVM can pass the entire description of the table along with the data, and it is critical to understand when you need to include the description and what the benefits are.