должностное лицо

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

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

Функциональность курсора с возможностью прокрутки не имеет никакой замены.

Синтаксис

curs = exec(conn,sqlquery)
curs = exec(conn,sqlquery,Name,Value)
curs = exec(conn,sqlquery,qTimeOut)

Описание

пример

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®authentication. Задайте пустое имя пользователя и пароль. База данных содержит таблицу productTable.

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

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

conn.Message
ans =

     []

Выберите все данные из таблицы productTable с помощью объекта connection. Присвойте оператор SQL SELECT переменной sqlquery. Объект 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)

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

свернуть все

Соединение с базой данных, заданное как объект connection, создается с функцией database.

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

Для получения информации о языке SQL-запроса см. Пример по SQL.

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

Типы данных: 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

Для просмотра документации необходимо авторизоваться на сайте