Spec-Zone.ru › ColdFusion

queryExecute

Выполняет SQL-запрос и возвращает результат.

queryExecute(sql [, params, options]) → returns query

  • CF11+
  • Lucee4.5+
  • BL 1.0.0+
  • См. также: cfquery cfqueryparam

    Справочник аргументов

    sql string
    Обязательный

    SQL-строка для выполнения.

    params any

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

    options struct

    Структура с параметрами запроса; поддерживаются все атрибуты тега cfquery, кроме атрибута name.

    Примеры
    Пример кода, вызывающего функцию queryExecute

    Простой пример

    Пример только с SQL. Предполагается, что источник данных по умолчанию указан (путём присвоения значения переменной this.datasource в Application.cfc)

    qryResult = queryExecute("SELECT * FROM Employees");

    Передача параметров запроса с помощью структуры

    Используйте :structKeyName в SQL и передайте структуру с соответствующими именами ключей.

    qryResult = queryExecute("SELECT * FROM Employees WHERE empid = :empid AND country = :country", {country="USA", empid=1});

    Передача параметров запроса с помощью массива

    При передаче массива используйте ? в качестве заполнителя в SQL

    qryResult = queryExecute("SELECT * FROM Employees WHERE empid = ? AND country = ?", [1,"USA"]);

    Передача параметров запроса с помощью структуры структур

    Если необходимо передать cfsqltype или другие атрибуты cfqueryparam, для каждого параметра можно передать структуру.

    qryResult = queryExecute("SELECT * FROM Employees WHERE empid = :empid AND country = :country", {country={value="USA", cfsqltype="cf_sql_varchar"}, empid={value=1, cfsqltype="cf_sql_integer"}});

    Указание источника данных

    Если источник данных не задан с помощью this.datasource в Application.cfc или требуется указать его явно, используйте третий аргумент.

    qryResult = queryExecute("SELECT * FROM Employees", {}, {datasource="myDataSourceName"});

    Полный пример

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

    sql = "SELECT * FROM Employees WHERE empid = :empid AND country = :country";
    qparams = structNew();
    qparams.empid = { value=1, cfsqltype="cf_sql_integer" };
    qparams.country = { value="Canada", cfsqltype="cf_sql_varchar" };
    options = { datasource="myDataSourceName" };
    qryResult = queryExecute(sql, qparams, options);

    Получение первичного ключа добавленной записи

    Чтобы вернуть сгенерированный ключ запроса INSERT, необходимо указать переменную результата в третьем аргументе options.* Обратите внимание: SQL-запрос должен содержать ТОЛЬКО один оператор INSERT и никакого другого SQL-кода, иначе generatedKey будет недоступен.

    queryExecute( "INSERT INTO employee ( firstname ) VALUES ( :firstname )", { firstname = { value="Han", cfsqltype="varchar" } }, { result="employee" } );
    writeDump( employee.generatedKey );

    Запрос IN с использованием списков

    Запрос к базе данных с использованием списка значений

    keys = '1,2,3,4,5,6,7';
    data = queryExecute("select * from sometable where somecolumn in (:keys)",{keys={value=keys,list=true}}); 

    Запросы к запросам

    Запрос к локальной переменной с данными без обращения к базе данных

    users = queryNew( "firstname", "varchar", [{"firstname":"Han"}] );
    subUsers = queryExecute( "select * from users", {}, { dbtype="query" } );
    writedump( subUsers ); 

    Возврат запроса в виде массива структур — Lucee5+

    Lucee 5+ Возврат объекта запроса, преобразованного в массив структур.

    users = queryNew( "firstname", "varchar", [{"firstname":"Han"}] );
    subUsers = queryExecute( "select * from users", {}, { dbtype="query", returntype="array" } );
    writedump( subUsers ); 

    Ожидаемый результат: [ { firstname: "Han" } ]

    Возврат запроса в виде массива структур — Lucee 4.5

    Lucee 4.5+ Возврат объекта запроса, преобразованного в массив структур.

    users = queryNew( "firstname", "varchar", [{"firstname":"Han"}] );
    subUsers = queryExecute( "select * from users", {}, { dbtype="query", returntype="array-of-entities" } );
    writedump( subUsers ); 

    Ожидаемый результат: [ { firstname: "Han" } ]

    Возврат запроса в виде структуры структур

    Lucee 5+ Возврат объекта запроса, преобразованного в структуру структур. (Ключ структуры определяется параметром "columnkey".)

    users = queryNew( "id, firstname", "integer, varchar", [{"id":1, "firstname":"Han"}] );
    subUsers = queryExecute( "select * from users", {}, { dbtype="query", returntype="struct", columnkey="id" } );
    writedump( subUsers ); 

    Ожидаемый результат: { 1: { id: 1, firstname: "Han" } }

    © 2012–present Foundeo, Inc. and the CFDocs contributors.
    Licensed under the MIT License.
    ColdFusion is a trademark of Adobe Systems Incorporated.
    https://cfdocs.org/queryexecute

    Spec-Zone.ru

    Настройки Оффлайн Что нового Помощь О нас
    Spec-Zone .ru
    спецификации, руководства, описания, API