Я думаю, что проблема у вас возникают в основном синтаксис связаны. Если у вас есть переменная с именем $ foo, $ {foo} ссылается на ту же переменную. Таким образом, ссылки $ {table} и $ {schema} в вашей строке sql работают нормально.
Проблема с $ {col.column_name}. Ваша переменная (я предполагаю) называется $ col и имеет член с именем column_name. Как указывают Роберт и Стивен в своих ответах, чтобы ссылаться на это, вы должны использовать $ ($ col.column_name). В общем случае $ (выражение) будет заменено значением выражения.
Причина, по которой допускаются фигурные скобки в именах переменных, заключается в том, что переменные могут иметь необычные символы в своих именах. Я бы порекомендовал не использовать синтаксис $ {} (если у вас нет веской причины) и заменить его прямыми ссылками $ var для переменных и $ ($ var.member) для ссылок на ссылки в строках.