Что такое CFSQLType в QueryExecute

когда я смотрю на

QueryExecute ("select from Artists where artistid=? and country=?",
    [1, "USA"], {datasource="cfartgallery"});

Мне интересно, запрашивается ли artistid, как если бы

<cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="1">

Из https://wikidocs.adobe.com/wiki/display/coldfusionen/QueryExecute


person James A Mohler    schedule 01.09.2015    source источник
comment
FWIW, включение полной отладки покажет тип cfsqltype в CF11. Пример Query Parameter Value(s) - Parameter #1(CF_SQL_CHAR) = 0   -  person Leigh    schedule 02.09.2015


Ответы (1)


Если вам нужно предоставить дополнительный атрибут в качестве параметра запроса (например, CFSQLType, список и разделитель), вы можете передать их как структуру для этого имени столбца.

Пример 2

QueryExecute("select from Employee where country=:country 
  and citizenship=:country", 
  {country={value='USA', CFSQLType='CF_SQL_CLOB', list=true}});

https://wikidocs.adobe.com/wiki/display/coldfusionen/QueryExecute

person Henry    schedule 01.09.2015
comment
Итак, если CFSQLType не указан, то по умолчанию используется cf_sql_varchar? - person James A Mohler; 02.09.2015
comment
@JamesAMohler Думаю, да, как и cfqueryparam без указания типа. Обычно это работает, но если для этого столбца есть индекс, но тип не указан, БД может не использовать этот индекс. - person Henry; 02.09.2015
comment
Генри, на самом деле параметр cfqueryparam по умолчанию равен cf_sql_char. БД может не использовать индекс Большинство баз данных обычно достаточно умны, чтобы привести литерал к правильному типу, а не к значениям столбца, что помешало бы использованию индекса. Хотя и не всегда. Однако пропуск типа также означает, что вы теряете проверку и отправляете значение в виде строки >что может привести к более серьезным проблемам - person Leigh; 02.09.2015
comment
Кстати, что за чертовщина с CF_SQL_CLOB в документах CF? У меня воспоминания Dreamweaver ;-) - person Leigh; 02.09.2015
comment
@Leigh ya, иногда страшно подумать, что за CFML инженеры Adobe пишут... - person Henry; 02.09.2015