exec

(Не рекомендуемый) Выполнить оператора SQL и открыть курсор

exec функция не рекомендуется. Для операторов SQL, которые возвращают данные, используйте fetch функцию или select вместо этого функция. Для других операторов SQL используйте execute вместо этого функция. Для получения дополнительной информации см. Вопросы совместимости.

Функциональность прокручиваемого курсора не заменяется.

Описание

пример

curs = exec(conn,sqlquery) создает cursor объект после выполнения оператора SQL sqlquery для подключения к базе данных conn.

curs = exec(conn,sqlquery,Name,Value) задает опции, используя один или несколько аргументы пары "имя-значение". Для примера, 'MaxRows',10 ограничивает количество строк, возвращаемых до 10 перед выполнением SQL-запросов.

curs = exec(conn,sqlquery,qTimeOut) использует значение тайм-аута qTimeOut для выполнения SQL-запросов.

Примеры

свернуть все

Используйте собственное подключение ODBC для импорта данных о продукте из Microsoft® SQL Server® база данных в MATLAB®. Затем определите самую высокую удельную стоимость среди продуктов.

Создайте подключение базы данных ODBC к базе данных Microsoft SQL Server с Windows® проверка подлинности. Укажите пустые имя пользователя и пароль. База данных содержит таблицу productTable.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Проверьте подключение к базе данных. Если на Message свойство пусто, подключение успешно.

conn.Message
ans =

     []

Выберите все данные из таблицы productTable использование connection объект. Назначьте SQL- SELECT оператор переменной sqlquery. The cursor объект содержит выполненный SQL-запрос.

sqlquery = 'SELECT * FROM productTable';
curs = exec(conn,sqlquery)
curs = 

   cursor with properties:

         Data: 0
     RowLimit: 0
     SQLQuery: 'SELECT * FROM productTable'
      Message: []
         Type: 'ODBCCursor Object'
    Statement: [1×1 database.internal.ODBCStatementHandle]

Для соединения ODBC, Type свойство содержит ODBCCursor Object. Для соединений JDBC это свойство содержит Database Cursor Object.

Импортируйте данные из таблицы в MATLAB.

curs = fetch(curs);
data = curs.Data;

Определите наивысшую удельную стоимость в таблице.

max(data.unitCost)
ans =

    24

После того, как вы закончите работать с cursor объект, закройте его. Закройте подключение к базе данных.

close(curs)
close(conn)

Входные параметры

свернуть все

Подключение к базе данных, заданное как ODBC connection объект или JDBC connection объект, созданный с использованием database функция.

Оператор SQL, заданный как вектор символов или строковый скаляр. SQL- оператора может быть любым допустимым SQL- оператора, включая вложенные запросы. Оператор SQL может быть хранимой процедурой, например {call sp_name (parm1,parm2,...)}. Для хранимых процедур, которые возвращают один или несколько наборов результатов, используйте exec функция. Для процедур, которые возвращают выходные аргументы, используйте runstoredprocedure.

Дополнительные сведения о языке запросов SQL см. в руководстве SQL.

Типы данных: char | string

Значение тайм-аута, заданное как числовой скаляр, обозначающий максимальное количество времени в секундах, то exec пытается выполнить оператора SQL sqlquery.

Типы данных: double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: curs = exec(conn,sqlquery,'MaxRows',rowlimit);

Максимальное количество строк для возврата перед выполнением SQL-запроса, заданное как разделенная разделенными запятой парами, состоящая из 'MaxRows' и положительный числовой скаляр. По умолчанию, exec функция возвращает все строки из выполненного SQL-запроса. Используйте этот аргумент пары "имя-значение", чтобы ограничить количество строк, импортированных в MATLAB из выполнения SQL-запроса. Для получения дополнительной информации об этой опции и других опциях управления памятью смотрите Data Import Memory Management.

Типы данных: double

Тип курсора, заданный как разделенная разделенными запятой парами, состоящая из 'CursorType' и одно из значений в этой таблице.

ЗначениеОписание

'forward_only'

Создайте базовый курсор.

'scrollable'

Создайте прокручиваемый курсор.

Выходные аргументы

свернуть все

Курсор базы данных, возвращенный как cursor объект.

Ограничения

Область аргумента пары "имя-значение" 'MaxRows' имеет следующие ограничения:

  • Если вы используете Microsoft Access™, собственный интерфейс ODBC не поддерживается.

  • Не все драйверы базы данных поддерживают установку максимального количества строк перед выполнением запроса. Для неподдерживаемого драйвера измените SQL-запрос, ограничив максимальное количество возвращаемых строк. Синтаксис SQL изменяется в зависимости от драйвера. Для получения дополнительной информации см. документацию по драйверу.

Совет

  • Порядок записей в базе данных не остается постоянным. Сортировка данных с помощью SQL- ORDER BY команда в вашем sqlquery оператор.

  • Для Microsoft Excel®, таблицы в sqlquery являются таблицами Excel. По умолчанию некоторые имена листов включают $ символ. Чтобы выбрать данные из листа с таким форматом имен, используйте SQL- оператора формы SELECT * FROM "Sheet1$"(или 'Sheet1$').

  • Перед изменением таблиц базы данных убедитесь, что база данных не открыта для редактирования. Если вы пытаетесь отредактировать базу данных, пока она открыта, вы получите эту ошибку MATLAB:

    [Vendor][ODBC Driver] The database engine could not lock 
    table 'TableName' because it is already in use by 
    another person or process.
  • Система управления базами данных PostgreSQL поддерживает многомерные поля, но SQL SELECT операторы не выполняются при получении этих полей, если вы не задаете индекс.

  • Некоторые базы данных требуют, чтобы вы включили символ, такой как #, до и после даты в запросе, следующим образом:

    curs = exec(conn,'SELECT * FROM mydb WHERE mydate > #03/05/2005#')

Альтернативная функциональность

Приложение

exec функция выполняет операторов SQL с помощью командной строки. Чтобы выполнить операторов SQL в интерактивном режиме, используйте приложение Database Explorer.

Вопросы совместимости

расширить все

Не рекомендуемый запуск в R2018b

Представлено до R2006a