Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureКонечная точка аналитики SQL в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
FOR Используйте предложение, чтобы указать один из следующих параметров для результатов запроса.
- Укажите
FOR BROWSE, чтобы разрешить обновления при просмотре результатов запроса в курсоре режима обзора. - Укажите
FOR XMLформат результатов запроса в формате XML. - Укажите
FOR JSONформат результатов запроса в формате JSON.
Соглашения о синтаксисе Transact-SQL
Syntax
[ FOR { BROWSE | <XML> | <JSON> } ]
<XML> ::=
XML
{
{ RAW [ ( 'ElementName' ) ] | AUTO }
[
<CommonDirectivesForXML>
[ , { XMLDATA | XMLSCHEMA [ ( 'TargetNameSpaceURI' ) ] } ]
[ , ELEMENTS [ XSINIL | ABSENT ]
]
| EXPLICIT
[
<CommonDirectivesForXML>
[ , XMLDATA ]
]
| PATH [ ( 'ElementName' ) ]
[
<CommonDirectivesForXML>
[ , ELEMENTS [ XSINIL | ABSENT ] ]
]
}
<CommonDirectivesForXML> ::=
[ , BINARY BASE64 ]
[ , TYPE ]
[ , ROOT [ ( 'RootName' ) ] ]
<JSON> ::=
JSON
{
{ AUTO | PATH }
[
[ , ROOT [ ( 'RootName' ) ] ]
[ , INCLUDE_NULL_VALUES ]
[ , WITHOUT_ARRAY_WRAPPER ]
]
}
ДЛЯ ПРОСМОТРА
BROWSE
Указывает, что обновления разрешены при просмотре данных в курсоре режима обзора DB-Library. Вы можете просмотреть таблицу в приложении, если таблица содержит столбец метки времени , таблица имеет уникальный индекс, а FOR BROWSE параметр находится в конце SELECT инструкций, отправляемых экземпляру SQL Server.
Note
Вы не можете использовать инструкцию <lock_hint> HOLDLOCKFOR BROWSE, SELECT содержащую этот параметр.
FOR BROWSE не может отображаться в SELECT инструкциях, UNION которые оператор присоединяет.
Note
Если уникальные ключевые столбцы индекса таблицы имеют значение NULL, а таблица находится на внутренней стороне внешнего соединения, режим обзора не поддерживает индекс.
Режим обзора позволяет сканировать строки в таблице SQL Server и обновлять данные в таблице по одной строке. Чтобы получить доступ к таблице SQL Server в приложении в режиме обзора, необходимо использовать один из следующих двух вариантов:
Инструкция, используемая
SELECTдля доступа к данным из таблицы SQL Server, должна заканчиваться ключевыми словамиFOR BROWSE. При включенииFOR BROWSEпараметра для использования режима обзора создаются временные таблицы.Чтобы включить режим просмотра, выполните следующую инструкцию Transact-SQL, используя
NO_BROWSETABLEэтот параметр:SET NO_BROWSETABLE ON;При включении
NO_BROWSETABLEпараметра всеSELECTоператоры ведут себя так, как еслиFOR BROWSEбы параметр был добавлен к операторам. Однако этотNO_BROWSETABLEпараметр не создает временные таблицы, которыеFOR BROWSEобычно используются для отправки результатов в приложение.
При попытке получить доступ к данным из таблиц SQL Server в режиме обзора с помощью SELECT запроса, включающего OUTER JOIN инструкцию, и при определении уникального индекса в таблице, которая присутствует во внутренней части OUTER JOIN инструкции, режим обзора не поддерживает уникальный индекс. Режим обзора поддерживает уникальный индекс, только если все ключевые столбцы уникальных индексов могут принимать NULL значения. Режим обзора не поддерживает уникальный индекс, если выполняются следующие условия:
Вы пытаетесь получить доступ к данным из таблиц SQL Server в режиме просмотра с помощью
SELECTзапроса, который включает инструкциюOUTER JOIN.Уникальный индекс определяется в таблице, которая присутствует на внутренней стороне инструкции
OUTER JOIN.
Чтобы воспроизвести это поведение в режиме просмотра, выполните следующие шаги.
В СРЕДЕ SQL Server Management Studio создайте базу данных с именем
SampleDB.SampleDBВ базе данных создайте таблицуtleftиtrightтаблицу, содержащую один столбец с именемc1. Определите уникальный индекс столбцаc1в таблицеtleftи задайте столбец для принятияNULLзначений. Для этого выполните в соответствующем окне запроса следующие инструкции Transact-SQL:CREATE TABLE tleft (c1 INT NULL UNIQUE); GO CREATE TABLE tright (c1 INT NULL); GOВставьте несколько значений в таблицу
tleftи таблицуtright. Убедитесь, что вы вставляете значениеNULLв таблицуtleft. Для этого выполните в окне запроса следующие инструкции Transact-SQL:INSERT INTO tleft VALUES (2); INSERT INTO tleft VALUES (NULL); INSERT INTO tright VALUES (1); INSERT INTO tright VALUES (3); INSERT INTO tright VALUES (NULL);Включите параметр
NO_BROWSETABLE. Для этого выполните в окне запроса следующие инструкции Transact-SQL:SET NO_BROWSETABLE ON;Доступ к данным в таблице
tleftи таблицеtrightс помощью инструкции внешнего соединения в запросеSELECT. Убедитесь, что таблицаtleftнаходится на внутренней стороне оператора внешнего соединения. Для этого выполните в окне запроса следующие инструкции Transact-SQL:SELECT tleft.c1 FROM tleft RIGHT OUTER JOIN tright ON tleft.c1 = tright.c1 WHERE tright.c1 <> 2;Обратите внимание на следующие выходные данные в области результатов.
c1 --- NULL NULL
После запуска SELECT запроса для доступа к таблицам в режиме обзора результирующий набор SELECT запроса содержит два NULL значения столбца c1 в tleft таблице из-за определения инструкции RIGHT OUTER JOIN . Поэтому в результирующем наборе нельзя различать NULL значения, поступающие из таблицы, и NULL значения, введенные инструкцией RIGHT OUTER JOIN . Вы можете получить неверные результаты, если запрос должен игнорировать NULL значения из результирующий набор.
Note
Если столбцы, включенные в уникальный индекс, не принимают NULL значения, все NULL значения в результирующем наборе были представлены инструкцией RIGHT OUTER JOIN .
Для XML
XML
Задает возврат результатов запроса в виде XML-документа. Необходимо указать один из следующих режимов XML: RAW, AUTOEXPLICIT, EXPLICIT. Дополнительные сведения о данных XML и SQL Server см. в разделе FOR XML (SQL Server).
RAW [ ('ElementName') ]
Принимает результат запроса и преобразует каждую строку в результирующем наборе в XML-элемент с универсальным идентификатором <row /> в виде тега элемента. Дополнительно можно задать имя для элемента строки. Результат выходных данных XML использует указанный ElementName в качестве элемента строки, созданного для каждой строки. Дополнительные сведения см. в разделе "Использование режима RAW" с FOR XML.
AUTO
Возвращает результаты запроса в виде простого вложенного дерева XML. Каждая таблица в предложении FROM, для которой по крайней мере один столбец указан в предложении SELECT, представлен как XML-элемент. Столбцы, перечисленные в предложении SELECT, сопоставляются с соответствующими атрибутами элемента. Дополнительные сведения см. в разделе "Использование режима AUTO" с FOR XML.
EXPLICIT
Указывает, что форма конечного дерева XML определена явно. С помощью этого режима необходимо написать запросы определенным образом, чтобы они указали дополнительные сведения о нужном вложении явным образом. Дополнительные сведения см. в разделе "Использование режима ЯВНО" с FOR XML.
XMLDATA
Возвращает встроенную схему XDR, но не добавляет корневой элемент в результат. При указании XMLDATAсхема XDR добавляется в документ.
Important
Директива XMLDATA устарела. Используйте поколение XSD для RAW и AUTO режимов. В режиме директивы нет замены XMLDATAEXPLICIT . Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.
Подавление нежелательных разрывов строк. Вы можете использовать SQL Server Management Studio (SSMS) для выполнения запроса, использующего FOR XML предложение. Иногда большой объем кода XML возвращается и отображается в одной ячейке. Длина этой строки XML может превышать максимальную длину одной строки в ячейке сетки SSMS. В этих случаях SSMS может вставить символы разрыва строки между длинными сегментами одной строки XML. Такие разрывы строк могут возникать в середине подстроки, которая не должна быть разделена по строкам. Вы можете предотвратить разрывы линий с помощью приведения AS XMLDATA. Это решение также может применяться при использовании FOR JSON PATH, как показано в следующем Transact-SQL примере SELECT инструкции SELECT:
SELECT CAST (
(SELECT column1,
column2
FROM my_table
FOR XML PATH ('')) AS VARCHAR (MAX)
) AS XMLDATA;
XMLSCHEMA [ ('TargetNameSpaceURI') ]
Возвращает встроенную XSD-схему. При задании указанной директивы, возвращающей заданное пространство имен схемы, дополнительно можно задать URI целевого пространства имен. Дополнительные сведения см. в разделе "Создание встроенной схемы XSD".
ELEMENTS
Задает возврат столбцов в виде вложенных элементов. В противном случае запрос сопоставляет их с XML-атрибутами. Этот параметр поддерживается только в режимах, AUTOа PATH также в RAWрежимах. Дополнительные сведения см. в разделе "Использование режима RAW" с FOR XML.
XSINIL
Указывает, что для значений столбцов создается NULL элемент с xsi:nil атрибутом true. Этот параметр можно указать только с помощью директивы ELEMENTS . Дополнительные сведения см. в разделе:
ABSENT
Указывает, что для NULL значений столбцов соответствующие XML-элементы не добавляются в xml-результат. Укажите этот параметр только с ELEMENTSпомощью .
PATH [ ('Имя элемента') ]
Создает оболочку элемента <row> для каждой строки в результирующем наборе. При необходимости можно указать имя элемента для оболочки элемента <row>. Если вы предоставляете пустую строку, например FOR XML PATH (''))элемент оболочки, не создается. Использование PATH может предоставить более простую альтернативу запросам, написанным с помощью директивы EXPLICIT. Дополнительные сведения см. в разделе "Использование режима PATH" с FOR XML.
BINARY BASE64
Задает возврат двоичных данных запросом в двоичном зашифрованном формате base64. При получении двоичных данных с помощью RAW и EXPLICIT режимом необходимо указать этот параметр. Этот параметр используется по умолчанию в AUTO режиме.
TYPE
Задает следующий формат выдаваемых запросом данных: тип xml. Дополнительные сведения см. в директиве TYPE в запросах FOR XML.
ROOT [ ('RootName') ]
Указывает, что в результирующий XML добавляется один элемент верхнего уровня. При необходимости можно указать имя создаваемого корневого элемента. Если корневое имя не указано, добавляется элемент по умолчанию <root> .
Дополнительные сведения см. в разделе FOR XML (SQL Server).
Example
В данном примере задается параметр FOR XML AUTO с параметрами TYPE и XMLSCHEMA.
TYPE Из-за параметра запрос возвращает результирующий набор клиенту в виде xml-типа. Параметр XMLSCHEMA определяет встроенную XSD-схему, включаемую в возвращаемые XML-данные, а параметр ELEMENTS указывает, что результаты в формате XML основываются на элементах.
USE AdventureWorks2025;
SELECT p.BusinessEntityID,
FirstName,
LastName,
PhoneNumber AS Phone
FROM Person.Person AS p
INNER JOIN Person.PersonPhone AS pph
ON p.BusinessEntityID = pph.BusinessEntityID
WHERE LastName LIKE 'G%'
ORDER BY LastName, FirstName
FOR XML AUTO, TYPE, XMLSCHEMA, ELEMENTS XSINIL;
предназначено для JSON
Remarks
В хранилище данных Fabric запрос должен заканчиваться FOR JSON, поэтому его нельзя использовать в вложенных запросах.
JSON
Укажите FOR JSON , чтобы возвращать результаты запроса, отформатированного как текст JSON. Кроме того, необходимо указать один из следующих режимов JSON: AUTO или PATH. Дополнительные сведения о предложении см. в разделе Форматирование FOR JSONрезультатов запроса в формате JSON с ПОМОЩЬЮ FOR JSON.
AUTO
Отформатируйте выходные данные JSON автоматически на основе структуры инструкции SELECT, указав FOR JSON AUTO. Дополнительные сведения и примеры см. в разделе "Форматирование выходных данных JSON" автоматически с помощью режима AUTO.
PATH
Полный контроль над форматом выходных данных JSON, указав FOR JSON PATH. режим PATH позволяет создавать объекты-оболочки и вложенные сложные свойства. Дополнительные сведения и примеры см. в разделе Формат вложенных выходных данных JSON с режимом PATH.
INCLUDE_NULL_VALUES
Включите значения NULL в выходные данные JSON, указав параметр INCLUDE_NULL_VALUES с предложением FOR JSON. Если этот параметр не указан, выходные данные не включают свойства JSON для NULL значений в результатах запроса. Дополнительные сведения и примеры см. в разделе "Включение значений NULL" в ФОРМАТЕ JSON — параметр INCLUDE_NULL_VALUES.
ROOT [ ('RootName') ]
Добавьте один элемент верхнего уровня в выходные данные JSON, указав параметр ROOT с предложением FOR JSON. Если параметр ROOT не указан, выходные данные JSON не имеют корневого элемента. Дополнительные сведения и примеры см. в разделе "Добавление корневого узла в выходные данные JSON" с параметром ROOT.
WITHOUT_ARRAY_WRAPPER
Удалите квадратные скобки, которые окружают выходные данные JSON по умолчанию, указав параметр WITHOUT_ARRAY_WRAPPER с предложением FOR JSON. Если не указать этот параметр, выходные данные JSON будут заключены в квадратные скобки. Используйте параметр WITHOUT_ARRAY_WRAPPER для создания одного объекта JSON в качестве выходных данных. Дополнительные сведения см. в разделе "Удалить квадратные скобки" из JSON — параметр WITHOUT_ARRAY_WRAPPER.
Дополнительные сведения см. в разделе Форматирование результатов запроса в формате JSON с помощью FOR JSON.