Ну, я же выкладывал текст одного из вариантов. Всё это в процедуре и есть. Если результат - список, то вызовом сразу возвращается очередь, а если просто совокупность переменных - то одним вызовом загружаются несколько.  
Если не нужна очередь, то указывается список полей. Если запрос не требует результата, то и поля не нужны 
LoadQueueFromSQL('Select sum(...), sum(...), count(....)  from ... where ....' , , loc:sum1, loc:sum2, loc:count) 
Если результат-список то передаётся очередь и, возможно, список полей очереди, куда писать. Если поля не указаны, результат прописывается в первое, второе и т.д. поле очереди ( кстати, несколько раз сталкивался с глюками и GPF, так что избегаю) 
Если в начале запроса стоит '+', очередь не чистится. 
NULL на автомате переводится в 0 (для числовых) и '' (для текстовых). Кому надо, пусть учитывает в запросе.
Ну и некоторое расширение языка запросов возможно, например (использовалось в разных программах) 
 - автоматическая конвертация даты LoadQueueFromSQL('Select [@d]max(date1) ' ,, loc:maxdate)
 - автоматическое добавление наименования схемы для Оракл ' Select count(n) from $base ... '  ($ заменяется на имя схемы) 
 - макро в запросах 'Select ... where x={{ loc:x }}' с заменой по evaluate  
Возможность на ходу одним оператором выполнить запрос и бежать дальше - это ли не прекрасно ?   
