Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2016 (13.x) e versões
posteriores Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (apenas server less SQL pool)
SQL database in Microsoft Fabric
Os exemplos a seguir demonstram algumas das maneiras de usar a FOR JSON cláusula e sua saída JSON no SQL Server ou em aplicativos cliente. Para obter mais informações, consulte Formatar resultados de consulta como JSON com FOR JSON.
No Fabric Data Warehouse, FOR JSON deve ser o último operador na consulta e, portanto, não é permitido dentro de subconsultas, como nos exemplos deste artigo.
Usar a saída FOR JSON nas variáveis do Motor de Banco de Dados SQL
A saída da FOR JSON cláusula é do tipo nvarchar(max) para que você possa atribuí-la a qualquer variável, conforme mostrado no exemplo a seguir.
DECLARE @x NVARCHAR(MAX) =
(SELECT TOP 10 *
FROM Sales.SalesOrderHeader
FOR JSON AUTO)
Usar a saída FOR JSON nas funções definidas pelo usuário do Mecanismo de Banco de Dados SQL
Você pode criar funções definidas pelo usuário que formate conjuntos de resultados como JSON e retornam essa saída JSON. O exemplo a seguir cria uma função definida pelo usuário que busca linhas de detalhes de um pedido de vendas e formata como uma matriz JSON.
CREATE FUNCTION GetSalesOrderDetails(@salesOrderId int)
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN (SELECT UnitPrice, OrderQty
FROM Sales.SalesOrderDetail
WHERE SalesOrderID = @salesOrderId
FOR JSON AUTO)
END
Você pode usar essa função em um lote ou consulta, como mostrado no exemplo a seguir.
DECLARE @x NVARCHAR(MAX) = dbo.GetSalesOrderDetails(43659)
PRINT dbo.GetSalesOrderDetails(43659)
SELECT TOP 10
H.*, dbo.GetSalesOrderDetails(H.SalesOrderId) AS Details
FROM Sales.SalesOrderHeader H
Mesclar dados pai e filho em uma única tabela
No exemplo a seguir, cada conjunto de linhas filho é formatado como uma matriz JSON. A matriz JSON torna-se o valor da coluna Detalhes na tabela pai.
SELECT TOP 10 SalesOrderId, OrderDate,
(SELECT TOP 3 UnitPrice, OrderQty
FROM Sales.SalesOrderDetail D
WHERE H.SalesOrderId = D.SalesOrderID
FOR JSON AUTO) AS Details
INTO SalesOrder
FROM Sales.SalesOrderHeader H
Atualizar os dados nas colunas JSON
O exemplo a seguir demonstra que você pode atualizar o valor das colunas que contêm texto JSON.
UPDATE SalesOrder
SET Details =
(SELECT TOP 1 UnitPrice, OrderQty
FROM Sales.SalesOrderDetail D
WHERE D.SalesOrderId = SalesOrder.SalesOrderId
FOR JSON AUTO)
Use a saída JSON em um aplicativo cliente C#
O exemplo a seguir mostra como recuperar a saída JSON de uma consulta em um objeto StringBuilder em um aplicativo cliente C#. Suponha que a variável queryWithForJson contenha o texto de uma SELECT declaração com uma cláusula FOR JSON.
var queryWithForJson = "SELECT ... FOR JSON";
using(var conn = new SqlConnection("<connection string>"))
{
using(var cmd = new SqlCommand(queryWithForJson, conn))
{
conn.Open();
var jsonResult = new StringBuilder();
var reader = cmd.ExecuteReader();
if (!reader.HasRows)
{
jsonResult.Append("[]");
}
else
{
while (reader.Read())
{
jsonResult.Append(reader.GetValue(0).ToString());
}
}
}
}
Saiba mais sobre o JSON no Mecanismo de Banco de Dados SQL
Para obter uma introdução visual ao suporte interno ao JSON, confira os seguintes vídeos: