При кодировании cfqueryparam или cfprocparam cfsqltype является необязательным. Тем не менее, я обычно видел, как он закодирован. Существуют ли какие-либо преимущества для указания cfsqltype?
Использует ли эффективная практика cfsqltype?
Ответ 1
Основное преимущество - дополнительный уровень проверки работоспособности ваших запросов, прежде чем передавать его в ваш запрос. Кроме того, в случае значений времени даты, я считаю, что CF правильно переводит строки datetime в соответствующий формат базы данных, если указан cfsqltype = "CF_SQL_DATE" или = "CF_SQL_TIMESTAMP".
Кроме того, я думаю, что для будущих разработчиков становится яснее видеть типы, за исключением тех случаев, когда они читают ваш код.
Ответ 2
Я бы добавил к комментарию Джейка. В большинстве СУБД база данных должна будет запускать вашу переменную через поиск по типу, чтобы обеспечить ее правильный тип или может быть введена в соответствующий тип неявно. БД не просто бросает переменную "type Any" в таблицу или представление. Он должен построить правильный ввод в план выполнения. Поэтому, если вы не предоставляете тип, вы просите БД "понять это".
В то время, когда вы указываете тип, который вы предварительно упреждаете или предварительно квалифицируете тип данных. Двигатель знает, что драйвер представляет переменную определенного типа, а затем может использовать ее напрямую или напрямую ее выводить.
Помните, что, хотя безопасность является хорошей причиной для использования cfqueryparam, это только одна причина. Другая причина состоит в том, чтобы создать правильно подготовленные операторы, которые могут выполняться эффективно - и идеально "поп" кэш плана выполнения на сервере БД.