Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
usługi Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (tylko bezserwerowa pula SQL)
Baza danych SQL w usłudze Microsoft Fabric (wersja zapoznawcza)
W poniższych przykładach pokazano niektóre sposoby używania klauzuli FOR JSON
i jego danych wyjściowych JSON w programie SQL Server lub w aplikacjach klienckich. Aby uzyskać więcej informacji, zobacz Formatowanie wyników zapytania w formacie JSON za pomocą FOR JSON.
W Fabric Data Warehouse, FOR JSON
musi być ostatnim operatorem w zapytaniu, dlatego nie jest dozwolony wewnątrz podzapytań, jak pokazano w przykładach w tym artykule.
Użyj wyników FOR JSON w zmiennych silnika bazy danych SQL
Dane wyjściowe klauzuli FOR JSON
są typu nvarchar(max), aby można było przypisać ją do dowolnej zmiennej, jak pokazano w poniższym przykładzie.
DECLARE @x NVARCHAR(MAX) =
(SELECT TOP 10 *
FROM Sales.SalesOrderHeader
FOR JSON AUTO)
Używanie danych wyjściowych FOR JSON w funkcjach definiowanych przez użytkownika w aparacie bazy danych SQL
Można tworzyć funkcje zdefiniowane przez użytkownika, które formatować zestawy wyników jako dane JSON i zwracać te dane wyjściowe JSON. Poniższy przykład tworzy funkcję zdefiniowaną przez użytkownika, która pobiera niektóre wiersze szczegółów zamówienia sprzedaży i formatuje je jako tablicę 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
Tej funkcji można użyć w trybie wsadowym lub w zapytaniu, jak pokazano w poniższym przykładzie.
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
Złącz dane nadrzędne i podrzędne w jedną tabelę
W poniższym przykładzie każdy zestaw wierszy podrzędnych jest sformatowany jako tablica JSON. Tablica JSON staje się wartością kolumny Details w tabeli nadrzędnej.
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
Aktualizowanie danych w kolumnach JSON
W poniższym przykładzie pokazano, że można zaktualizować wartość kolumny zawierającej tekst JSON.
UPDATE SalesOrder
SET Details =
(SELECT TOP 1 UnitPrice, OrderQty
FROM Sales.SalesOrderDetail D
WHERE D.SalesOrderId = SalesOrder.SalesOrderId
FOR JSON AUTO)
Używanie wyjścia FOR JSON w aplikacji klienckiej języka C#
W poniższym przykładzie pokazano, jak pobrać dane wyjściowe JSON zapytania do obiektu StringBuilder w aplikacji klienckiej języka C#. Załóżmy, że zmienna queryWithForJson
zawiera tekst instrukcji SELECT
z klauzulą 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());
}
}
}
}
Dowiedz się więcej o JSON w silniku bazy danych SQL
Aby zapoznać się z wizualnym wprowadzeniem do wbudowanej obsługi kodu JSON, zobacz następujące wideo: