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