Является ли использование cfsqltype хорошей практикой? - PullRequest
10 голосов
/ 20 марта 2012

При кодировании cfqueryparam или cfprocparam, cfsqltype является необязательным.Тем не менее, я обычно видел это закодировано.Есть ли какие-либо преимущества для указания cfsqltype?

Ответы [ 2 ]

16 голосов
/ 20 марта 2012

Основным преимуществом является дополнительный уровень проверки работоспособности ваших запросов перед их передачей в запрос.Кроме того, я полагаю, что в случае значений даты и времени CF будет правильно переводить строки даты и времени в правильный формат базы данных, если указано cfsqltype = "CF_SQL_DATE" или = "CF_SQL_TIMESTAMP".

Кроме того, я думаю,для будущих разработчиков становится понятнее, что типы будут исключены при чтении вашего кода.

13 голосов
/ 20 марта 2012

Я бы добавил к комментарию Джейка. В большинстве RDBMS база данных должна будет запускать вашу переменную через поиск типов, чтобы убедиться, что это правильный тип или может быть неявно приведен к нужному типу. БД не просто бросает переменную типа Any в таблицу или представление. Он должен встроить правильную типизацию в план выполнения. Поэтому, если вы не предоставите тип, вы просите БД «выяснить это».

Принимая во внимание, что, когда вы указываете тип, который вы опережаете или предварительно определяете тип данных. Механизм знает, что драйвер представляет переменную определенного типа, и может затем использовать ее напрямую или получить ее напрямую.

Помните, что хотя безопасность - это хорошая причина для использования cfqueryparam, это только одна из причин. Другая причина заключается в создании правильно подготовленных операторов, которые могут эффективно выполняться, и в идеале «выталкивать» кэш плана выполнения на сервер БД.

...