Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2016 (13.x) a novější verze
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (pouze bezserverový fond SQL)
Databáze SQL v Microsoft Fabric
Následující příklady ukazují některé způsoby použití FOR JSON klauzule a výstupu JSON v SQL Serveru nebo v klientských aplikacích. Další informace najdete v tématu Formátování výsledků dotazu jako JSON pomocí FOR JSON.
V Fabric Data Warehouse musí být FOR JSON posledním operátorem v dotazu, a proto není dovoleno používat jej uvnitř poddotazů, jak je ukázáno v příkladech v tomto článku.
Použití výstupu FOR JSON v proměnných databázového stroje SQL
Výstup FOR JSON klauzule je typu nvarchar(max), takže ji můžete přiřadit k libovolné proměnné, jak je znázorněno v následujícím příkladu.
DECLARE @x NVARCHAR(MAX) =
(SELECT TOP 10 *
FROM Sales.SalesOrderHeader
FOR JSON AUTO)
Použití výstupu FOR JSON v uživatelem definovaných funkcích databázového stroje SQL
Můžete vytvořit uživatelem definované funkce, které formátuje sady výsledků ve formátu JSON, a vrátit tento výstup JSON. Následující příklad vytvoří uživatelem definovanou funkci, která načte některé řádky podrobností prodejní objednávky a naformátuje je jako pole 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
Tuto funkci můžete použít v dávce nebo dotazu, jak je znázorněno v následujícím příkladu.
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
Sloučení nadřazených a podřízených dat do jedné tabulky
V následujícím příkladu se každá sada podřízených řádků naformátuje jako pole JSON. Pole JSON se stane hodnotou sloupce Details v nadřazené tabulce.
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
Aktualizace dat ve sloupcích JSON
Následující příklad ukazuje, že můžete aktualizovat hodnotu sloupce, který obsahuje text JSON.
UPDATE SalesOrder
SET Details =
(SELECT TOP 1 UnitPrice, OrderQty
FROM Sales.SalesOrderDetail D
WHERE D.SalesOrderId = SalesOrder.SalesOrderId
FOR JSON AUTO)
Použití výstupu FOR JSON v klientské aplikaci jazyka C#
Následující příklad ukazuje, jak načíst výstup JSON dotazu do objektu StringBuilder v klientské aplikaci jazyka C#. Předpokládejme, že proměnná queryWithForJson obsahuje text SELECT příkazu s 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());
}
}
}
}
Další informace o formátu JSON v databázovém stroji SQL
Vizuální úvod k integrované podpoře JSON najdete v následujících videích: