Quelqu'un peut-il donner un exemple sur la manière de passer un type JSON en tant que paramètre d'une procédure stockée SQL Server 2016 à l'aide de ADO.Net dans un projet Api Web Core ASP.Net? Je souhaite voir un exemple de procédure stockée SQL Server 2016 et transmettre le type JSON dans C # ASP.Net Core Web Api.
Il n'y a pas de json data type
dans le serveur sql, vous pouvez simplement envoyer votre json
en tant que varchar
à une procédure stockée.
Si vous souhaitez mapper votre json sur une table, vous pouvez utiliser OPENJSON
pour convertir les données en rows
et columns
.
CREATE PROCEDURE SaveJSON
@pID int,
@pJson nvarchar(max)
AS
BEGIN
INSERT INTO [YourTable]
([ID]
,[JSONData])
VALUES
(@pID
,@pJson)
END
Si vous voulez mapper des objets JSON avec une table, vous pouvez le faire.
//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))
Ici est un très bon article détaillé qui vous donnera une idée détaillée à traiter avec json data
SQL Server 2016 prend en charge le format JSON natif - un nouveau type de données JSON (basé sur nvarchar
) est présent, ainsi qu'une commande FOR JSON permettant de convertir le résultat d'une requête au format JSON.
Microsoft n'a pas inclus de type de données JSON distinct. Il existe plutôt un certain nombre de fonctions JSON (pour empaqueter des lignes de base de données dans JSON ou pour analyser JSON en données relationnelles) qui fonctionnent sur des colonnes de type NVARCHAR(n)
Si vous avez du texte JSON, vous pouvez extraire des données de JSON ou vérifier que JSON est correctement formaté à l'aide des fonctions intégrées JSON_VALUE
, JSON_QUERY
et ISJSON
. Pour des requêtes et des analyses plus avancées, la fonction OPENJSON
peut transformer un tableau d'objets JSON en un ensemble de lignes. Toute requête SQL peut être exécutée sur le jeu de résultats renvoyé. Enfin, il existe la clause FOR JSON
qui vous permet de formater les résultats de la requête sous forme de texte JSON.
Je vous recommande donc d'utiliser NVARCHAR(MAX)
comme paramètre de procédure stockée.