Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op: SQL Server 2016 (13.x) en hoger
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (alleen serverloze SQL-pool)
In de volgende voorbeelden ziet u enkele manieren om de FOR JSON
-component en de JSON-uitvoer ervan te gebruiken in SQL Server of in client-apps.
queryresultaten opmaken als JSON met FOR JSON-
In Fabric Data Warehouse moet FOR JSON
de laatste operator in de query zijn en dus niet toegestaan in subquery's, zoals in de voorbeelden in dit artikel.
FOR JSON-uitvoer gebruiken in SQL Server-variabelen
De uitvoer van de FOR JSON
component is van het type nvarchar(max), zodat u deze kunt toewijzen aan elke variabele, zoals wordt weergegeven in het volgende voorbeeld.
DECLARE @x NVARCHAR(MAX) =
(SELECT TOP 10 *
FROM Sales.SalesOrderHeader
FOR JSON AUTO)
FOR JSON-uitvoer gebruiken in door de gebruiker gedefinieerde SQL Server-functies
U kunt door de gebruiker gedefinieerde functies maken die resultatensets opmaken als JSON en deze JSON-uitvoer retourneren. In het volgende voorbeeld wordt een door de gebruiker gedefinieerde functie gemaakt waarmee een aantal detailrijen voor verkooporders worden opgehaald en opgemaakt als een JSON-matrix.
CREATE FUNCTION GetSalesOrderDetails(@salesOrderId int)
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN (SELECT UnitPrice, OrderQty
FROM Sales.SalesOrderDetail
WHERE SalesOrderID = @salesOrderId
FOR JSON AUTO)
END
U kunt deze functie gebruiken in een batch of query, zoals wordt weergegeven in het volgende voorbeeld.
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
Ouder- en kindgegevens samenvoegen in één tabel
In het volgende voorbeeld wordt elke set onderliggende rijen opgemaakt als een JSON-array. De JSON-matrix wordt de waarde van de kolom Details in de bovenliggende tabel.
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
De gegevens in JSON-kolommen bijwerken
In het volgende voorbeeld ziet u dat u de waarde van een kolom met JSON-tekst kunt bijwerken.
UPDATE SalesOrder
SET Details =
(SELECT TOP 1 UnitPrice, OrderQty
FROM Sales.SalesOrderDetail D
WHERE D.SalesOrderId = SalesOrder.SalesOrderId
FOR JSON AUTO)
FOR JSON-uitvoer gebruiken in een C#-client-app
In het volgende voorbeeld ziet u hoe u de JSON-uitvoer van een query ophaalt in een StringBuilder-object in een C#-client-app. Stel dat de variabele queryWithForJson
de tekst van een SELECT
verklaring met een FOR JSON
clausule bevat.
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());
}
}
}
}
Meer informatie over JSON in de SQL Database Engine
Microsoft-video's
Zie de volgende video's voor een visuele inleiding tot de ingebouwde JSON-ondersteuning in SQL Server en Azure SQL Database: