wake-up-neo.net

Übergeben des JSON-Typs als Parameter an die gespeicherte Prozedur von SQL Server 2016 mithilfe von ADO.Net im ASP.Net Core-Projekt

Kann jemand ein Beispiel geben, wie der JSON-Typ als Parameter an die gespeicherte Prozedur von SQL Server 2016 mithilfe von ADO.Net im C # ASP.Net Core Web Api-Projekt übergeben wird? Ich möchte ein Beispiel für eine gespeicherte Prozedur von SQL Server 2016 sehen und einen JSON-Typ in C # ASP.Net Core Web Api übergeben. 

12
jump4791

Es gibt keinen json data type in SQL Server. Sie können Ihre json einfach als varchar an die gespeicherte Prozedur senden. 

Wenn Sie Ihren Json auf eine Tabelle abbilden möchten, können Sie mit OPENJSON Daten in rows und columns konvertieren.

CREATE PROCEDURE SaveJSON
@pID int,
@pJson nvarchar(max)

AS
BEGIN

INSERT INTO [YourTable]
       ([ID]
       ,[JSONData])
 VALUES
       (@pID
       ,@pJson)
END

Wenn Sie Json-Objekte mit Tabelle zuordnen möchten, können Sie dies tun

//json would be something like this
[
 { "id" : 2,"name": "John"},
 { "id" : 5,"name": "John"}
]

INSERT INTO YourTable (id,Name)
SELECT id, name
FROM OPENJSON(@pJson)
WITH (id int,
name nvarchar(max))

Hier ist ein sehr guter und detaillierter Artikel, der Ihnen eine detaillierte Vorstellung über den Umgang mit json data gibt.

17
Mairaj

SQL Server 2016 bietet native JSON-Unterstützung - ein neuer JSON-Datentyp (der auf nvarchar basiert) sowie ein FOR JSON-Befehl zum Konvertieren der Ausgabe einer Abfrage in das JSON-Format

Microsoft hat keinen separaten JSON-Datentyp hinzugefügt. Stattdessen gibt es eine Reihe von JSON-Funktionen (zum Packen von Datenbankzeilen in JSON oder zum Analysieren von JSON in relationalen Daten), die mit Spalten des Typs NVARCHAR(n) arbeiten.

Wenn Sie über einen JSON-Text verfügen, können Sie Daten aus JSON extrahieren oder mit den integrierten Funktionen JSON_VALUE, JSON_QUERY und ISJSON überprüfen, ob JSON ordnungsgemäß formatiert ist. Für eine erweiterte Abfrage und Analyse kann die OPENJSON-Funktion ein Array von JSON-Objekten in einen Satz von Zeilen umwandeln. Jede SQL-Abfrage kann für die zurückgegebene Ergebnismenge ausgeführt werden. Schließlich gibt es noch die Klausel FOR JSON, mit der Sie Abfrageergebnisse als JSON-Text formatieren können.

Daher empfehle ich, NVARCHAR(MAX) als Parameter für gespeicherte Prozeduren zu verwenden.

0
Saadi