exponenta event banner

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

(Не рекомендуется) Выполнить инструкцию 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. 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-запроса. Дополнительные сведения об этом параметре и других параметрах управления памятью см. в разделе Управление памятью импорта данных.

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