Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Endpoint de análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de dados SQL no Microsoft Fabric
Use a cláusula FOR para especificar uma das seguintes opções para os resultados da consulta.
Permita atualizações enquanto visualiza os resultados da consulta num cursor do modo de navegação especificando
FOR BROWSE.Formate os resultados da consulta como XML especificando
FOR XML.Formate os resultados da consulta como JSON especificando
FOR JSON.
Transact-SQL convenções de sintaxe
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 ]
]
}
PARA NAVEGAR
BROWSE
Especifica que as atualizações sejam permitidas durante a visualização dos dados em um cursor do modo de navegação DB-Library. Uma tabela pode ser navegada em um aplicativo se a tabela incluir um coluna de carimbo de data/hora, se a tabela tiver um índice exclusivo e se a opção FOR BROWSE estiver no final das instruções SELECT enviadas a uma instância do SQL Server.
Note
Não é possível usar o <lock_hint> HOLDLOCK em uma instrução SELECT que inclui a opção FOR BROWSE .
FOR BROWSE não pode aparecer nas instruções SELECT que são unidas pelo operador UNION.
Note
Quando as colunas de chave de índice exclusivas de uma tabela são anuláveis e a tabela está no lado interno de uma junção externa, o índice não é suportado pelo modo de navegação.
O modo de navegação permite verificar as linhas na tabela do SQL Server e atualizar os dados na tabela uma linha de cada vez. Para acessar uma tabela do SQL Server em seu aplicativo no modo de navegação, você deve usar uma das duas opções a seguir:
A instrução SELECT que você usa para acessar os dados da tabela do SQL Server deve terminar com as palavras-chave FOR BROWSE. Quando você ativa a opção FOR BROWSE para usar o modo de navegação, tabelas temporárias são criadas.
Você deve executar a seguinte instrução Transact-SQL para ativar o modo de navegação usando a opção NO_BROWSETABLE:
SET NO_BROWSETABLE ONQuando você ativa a opção NO_BROWSETABLE, todas as instruções SELECT se comportam como se a opção FOR BROWSE fosse anexada às instruções. No entanto, a opção NO_BROWSETABLE não cria as tabelas temporárias que a opção FOR BROWSE geralmente usa para enviar os resultados para seu aplicativo.
Quando você tenta acessar os dados de tabelas do SQL Server no modo de navegação usando uma consulta SELECT que envolve uma instrução de junção externa e quando um índice exclusivo é definido na tabela que está presente no lado interno de uma instrução de junção externa, o modo de navegação não oferece suporte ao índice exclusivo. O modo de navegação suporta o índice exclusivo somente quando todas as colunas de chave de índice exclusivas podem aceitar valores NULL. O modo de navegação não suporta o índice exclusivo se as seguintes condições forem verdadeiras:
Você tenta acessar os dados de tabelas do SQL Server no modo de navegação usando uma consulta SELECT que envolve uma instrução de junção externa.
Um índice exclusivo é definido na tabela que está presente no lado interno de uma instrução de junção externa.
Para reproduzir esse comportamento no modo de navegação, execute estas etapas:
No SQL Server Management Studio, crie um banco de dados, chamado
SampleDB.No banco de dados
SampleDB, crie uma tabelatlefte uma tabelatrightque contenham uma única coluna chamadac1. Defina um índice exclusivo na colunac1na tabelatlefte defina a coluna para aceitar valoresNULL. Para fazer isso, execute as seguintes instruções Transact-SQL em uma janela de consulta apropriada:CREATE TABLE tleft(c1 INT NULL UNIQUE) ; GO CREATE TABLE tright(c1 INT NULL) ; GOInsira vários valores na tabela
tlefte na tabelatright. Certifique-se de inserir um valorNULLna tabelatleft. Para fazer isso, execute as seguintes instruções Transact-SQL na janela de consulta: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) ; GOAtive a opção
NO_BROWSETABLE. Para fazer isso, execute as seguintes instruções Transact-SQL na janela de consulta:SET NO_BROWSETABLE ON ; GOAcesse os dados na tabela
tlefte na tabelatrightusando uma instrução de junção externa na consultaSELECT. Certifique-se de que a tabelatleftestá no lado interno da instrução de junção externa. Para fazer isso, execute as seguintes instruções Transact-SQL na janela de consulta:SELECT tleft.c1 FROM tleft RIGHT JOIN tright ON tleft.c1 = tright.c1 WHERE tright.c1 <> 2 ;Observe a seguinte saída no painel Resultados do:
c1 --- NULL NULL
Depois de executar a consulta SELECT para acessar as tabelas no modo de navegação, o conjunto de resultados da consulta SELECT contém dois valores NULL para a coluna c1 na tabela tleft devido à definição da instrução de junção externa direita. Portanto, no conjunto de resultados, não é possível distinguir entre os valores NULL que vieram da tabela e os valores NULL que a instrução de junção externa direita introduziu. Você pode receber resultados incorretos se precisar ignorar os valores NULL do conjunto de resultados.
Note
Se as colunas incluídas no índice exclusivo não aceitarem valores NULL, todos os valores NULL no conjunto de resultados foram introduzidos pela instrução de junção externa direita.
PARA XML
XML
Especifica que os resultados de uma consulta devem ser retornados como um documento XML. Um dos seguintes modos XML deve ser especificado: RAW, AUTO, EXPLICIT. Para obter mais informações sobre dados XML e SQL Server, consulte PARA XML (SQL Server).
RAW [ ('NomeElemento') ]
Obtém o resultado da consulta e transforma cada linha no conjunto de resultados em um elemento XML com um identificador genérico <row /> como a marca do elemento. Opcionalmente, você pode especificar um nome para o elemento de linha. A saída XML resultante usa o ElementName especificado como o elemento de linha gerado para cada linha. Para obter mais informações, consulte Usar o modo RAW com FOR XML.
AUTO
Retorna os resultados da consulta em uma árvore XML simples e aninhada. Cada tabela na cláusula FROM, para a qual pelo menos uma coluna está listada na cláusula SELECT, é representada como um elemento XML. As colunas listadas na cláusula SELECT são mapeadas para os atributos de elemento apropriados. Para obter mais informações, consulte Usar o modo AUTO com FOR XML.
EXPLICIT
Especifica que a forma da árvore XML resultante é definida explicitamente. Usando esse modo, as consultas devem ser escritas de uma maneira específica para que informações adicionais sobre o aninhamento desejado sejam especificadas explicitamente. Para obter mais informações, consulte Usar o modo EXPLÍCITO com FOR XML.
XMLDATA
Retorna o esquema XDR embutido, mas não adiciona o elemento raiz ao resultado. Se XMLDATA for especificado, o esquema XDR será anexado ao documento.
Important
A diretiva XMLDATA está obsoleta. Use a geração XSD no caso dos modos RAW e AUTO. Não há substituto para a diretiva XMLDATAEXPLICIT modo. Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.
Suprimir quebras de linha indesejadas: Você pode usar o SQL Server Management Studio (SSMS) para emitir uma consulta que usa a cláusula FOR XML. Às vezes, uma grande quantidade de XML é retornada e exibida em uma célula de grade. A cadeia de caracteres XML pode ser maior do que uma célula de grade do SSMS pode conter em uma única linha. Nesses casos, o SSMS pode inserir caracteres de quebra de linha entre segmentos longos de toda a cadeia de caracteres XML. Essas quebras de linha podem ocorrer no meio de uma substring que não deve ser dividida entre linhas. Você pode evitar as quebras de linha usando um AS XMLDATAde transmissão. Essa solução também pode ser aplicada quando você usa FOR JSON PATH, como no seguinte Transact-SQL instrução SELECT de exemplo:
SELECT CAST(
(SELECT column1, column2
FROM my_table
FOR XML PATH('')
)
AS VARCHAR(MAX)
) AS XMLDATA ;
XMLSCHEMA: [ ('TargetNameSpaceURI') ]
Retorna o esquema XSD embutido. Opcionalmente, você pode especificar um URI de namespace de destino ao especificar essa diretiva, que retorna o namespace especificado no esquema. Para obter mais informações, consulte gerar um esquema XSD embutido.
ELEMENTS
Especifica que as colunas são retornadas como subelementos. Caso contrário, eles são mapeados para atributos XML. Esta opção é suportada apenas nos modos RAW, AUTO e PATH. Para obter mais informações, consulte Usar o modo RAW com FOR XML.
XSINIL
Especifica que um elemento com xsi:nil atributo definido como True ser criado para NULL valores de coluna. Esta opção só pode ser especificada com ELEMENTS diretiva. Para mais informações, consulte:
ABSENT
Indica que, para NULL valores de coluna, os elementos XML correspondentes não serão adicionados no resultado XML. Especifique esta opção apenas com ELEMENTS.
CAMINHO [ ('ElementName') ]
Gera um wrapper de elementos <row> para cada linha do conjunto de resultados. Opcionalmente, você pode especificar um nome de elemento para o wrapper de elemento <row>. Se uma cadeia de caracteres vazia for fornecida, como FOR XML PATH ('') ), um elemento wrapper não será gerado. O uso PATH pode fornecer uma alternativa mais simples às consultas escritas usando a diretiva EXPLICIT. Para obter mais informações, consulte Usar o modo PATH com FOR XML.
BASE BINÁRIA64
Especifica que a consulta retorna os dados binários no formato binário codificado em base64. Quando você recupera dados binários usando o modo RAW e EXPLICIT, essa opção deve ser especificada. Este é o padrão no modo AUTO.
TYPE
Especifica que a consulta retorna resultados como tipo de xml. Para obter mais informações, consulte Diretiva TYPE em Consultas FOR XML.
RAIZ [ ('RootName') ]
Especifica que um único elemento de nível superior seja adicionado ao XML resultante. Opcionalmente, você pode especificar o nome do elemento raiz a ser gerado. Se o nome da raiz opcional não for especificado, o elemento <root> padrão será adicionado.
Para obter mais informações, consulte PARA XML (SQL Server).
Example
O exemplo a seguir especifica FOR XML AUTO com as opções TYPE e XMLSCHEMA. Devido à opção TYPE, o conjunto de resultados é retornado ao cliente como um tipo de xml. A opção XMLSCHEMA especifica que o esquema XSD embutido é incluído nos dados XML retornados e a opção ELEMENTS especifica que o resultado XML é centrado em elementos.
USE AdventureWorks2022;
GO
SELECT p.BusinessEntityID, FirstName, LastName, PhoneNumber AS Phone
FROM Person.Person AS p
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;
PARA JSON
Remarks
No Fabric Data Warehouse, FOR JSON deve ser o último operador na consulta e, portanto, não é permitido dentro de subconsultas.
JSON
Especifique FOR JSON para retornar os resultados de uma consulta formatada como texto JSON. Você também precisa especificar um dos seguintes modos JSON: AUTO ou PATH. Para obter mais informações sobre a cláusula FOR JSON, consulte Formatar resultados da consulta como JSON com para JSON (SQL Server).
AUTO
Formate a saída JSON automaticamente com base na estrutura da instrução SELECT especificando FOR JSON AUTO. Para obter mais informações e exemplos, consulte Formatar saída JSON automaticamente com o modo AUTO (SQL Server).
PATH
Obtenha controle total sobre o formato da saída JSON especificando FOR JSON PATH.
PATH modo permite criar objetos wrapper e aninhar propriedades complexas. Para obter mais informações e exemplos, consulte Formatar saída JSON aninhada com o modo PATH (SQL Server).
INCLUDE_NULL_VALUES
Inclua valores NULL na saída JSON especificando a opção INCLUDE_NULL_VALUES com a cláusula FOR JSON. Se você não especificar essa opção, a saída não incluirá propriedades JSON para NULL valores nos resultados da consulta. Para obter mais informações e exemplos, consulte Incluir valores nulos na saída JSON com a opção INCLUDE_NULL_VALUES (SQL Server).
RAIZ [ ('RootName') ]
Adicione um único elemento de nível superior à saída JSON especificando a opção ROOT com a cláusula FOR JSON. Se você não especificar a opção ROOT, a saída JSON não terá um elemento raiz. Para obter mais informações e exemplos, consulte Adicionar um nó raiz à saída JSON com a opção ROOT (SQL Server).
WITHOUT_ARRAY_WRAPPER
Remova os colchetes que cercam a saída JSON por padrão, especificando a opção WITHOUT_ARRAY_WRAPPER com a cláusula FOR JSON. Se você não especificar essa opção, a saída JSON será colocada entre colchetes. Use a opção WITHOUT_ARRAY_WRAPPER para gerar um único objeto JSON como saída. Para obter mais informações, consulte Remover colchetes da saída JSON com a opção WITHOUT_ARRAY_WRAPPER (SQL Server).
Para obter mais informações, consulte Formatar resultados de consulta como JSON com para JSON (SQL Server).