Использование передаваемых запросов в качестве таблиц
Приложение SQL Server отправляет передаваемые запросы в источники данных OLE DB в виде неинтерпретированных строк запроса. Синтаксис запроса должен быть таким, чтобы источник данных OLE DB принял запрос. Инструкция Transact-SQL обращается к результату передаваемого запроса как к обычной таблице.
Набор строк с поставщика OLE DB можно сформировать следующими способами:
обратиться в источнике данных к объекту, который может быть представлен поставщиком в виде табличного набора строк. Все поставщики поддерживают такую возможность;
отправить поставщику команду, которая может быть обработана поставщиком и представить результаты выполнения команды в виде набора строк. Для этого необходимо, чтобы поставщик поддерживал объект OLE DB Command и его обязательные интерфейсы;
Если поставщик поддерживает объект Command, то для отправки поставщику команд, называемых передаваемыми запросами, используются следующие функции языка Transact-SQL:
функция OPENQUERY отправляет строку команды источнику данных OLE DB с использованием имени связанного сервера;
функции OPENROWSET и OPENDATASOURCE поддерживают отправку строки команды источнику данных OLE DB. К результирующему набору строк можно обратиться с помощью нерегламентированного запроса.
Передаваемые запросы, в которых строка запроса содержит вызов хранимой процедуры, поддерживаются функциями OPENROWSET и OPENQUERY только в том случае, если запрос обладает одним из следующих свойств:
выполняет единственную статическую инструкцию SELECT;
не использует динамические инструкции EXECUTE;
не выполняет операций модификации данных.
Спецификацией OLE DB не определен командный язык, которым должны пользоваться поставщики OLE DB. Поставщики OLE DB поддерживают любой командный язык, который относится к представляемым ими данным. Поставщики OLE DB, которые предоставляют данные реляционных баз данных обычно поддерживают язык SQL. Другие поставщики, например те, которые представляют данные из файла электронной почты или сетевого каталога, обычно поддерживают другой язык.
См. также