Мне не нравится полагаться на позиционные параметры, можно ли это сделать с HDBC?поддерживает Database.HDBC именованные параметры?
В качестве аргументов для различных выполняемых функций this package я мог видеть проходящий [(String, SqlValue)]
вместо [SqlValue]
.
В двух словах, я бы скорее
select
t.f1
, t.f2
, t.f3
from
schema.table t
where
t.f1 > @param1
and t.f2 < @param2
чем
select
t.f1
, t.f2
, t.f3
from
schema.table t
where
t.f1 > ?
and t.f2 < ?
Спасибо, это подход, который я не предполагал; В настоящее время я делаю это так declare (at) param1 type declare (at) param2 type set (at) param1 =? set (at) param2 =? ... остальное утверждение Проблема со строчной интерполяцией обрабатывает потенциальные инъекции sql со связанными параметрами. Я знаю, что я в безопасности (до тех пор, пока нет динамического sql, сгенерированного под капотом) – smoothdeveloper
будьте осторожны с использованием hdbc placeholderes для обновления/вставки. У них неприятная ошибка. Они добавляют дополнительное пространство в конце значения. Я исправил ошибку на github https://github.com/hdbc/hdbc-odbc/pull/10, но он по-прежнему не принимается в основной репозиторий –