2016-12-27 10 views
8

C#ASP.NetでADO.Netを使用してSQL Server 2016ストアドプロシージャのパラメータとしてJSONタイプを渡す方法の例を挙げることができます。コアWeb APIプロジェクトですか? C#ASP.Net Core Web APIにSQL Server 2016ストアドプロシージャとJSON型のパスの例を見たいと思います。JSONタイプをSQL Server 2016ストアドプロシージャに渡すASP.NetコアプロジェクトでADO.Netを使用する

+2

非常に良い質問です。私も欲しい –

+0

AFIAK、SQL Serverの2016はJSONデータ型を持っていないので、JSNをvarcharとしてストアドプロシージャに渡すだけです。ストアドプロシージャ内では、JSONデータの処理方法を知っている[組み込み関数](https://msdn.microsoft.com/en-us/library/dn921897.aspx)を使用できます。コード例は、[この記事。](https://blogs.msdn.microsoft.com/sqlserverstorageengine/2015/09/08/passing-arrays-to-t-sql-procedures-as-json/)で確認できます。 –

+0

あなたの質問には2つの文章があり、どちらも*全く*同じことを言っています。あなたの質問のタイトルはまったく同じことを言います。あなたの質問をきれいにしてください。 – Tomalak

答えて

7

jsonvarcharとしてストアドプロシージャに送信するだけで、json data typeは存在しません。

jsonにテーブルをマップする場合は、OPENJSONを使用して、rowscolumnsにデータを変換することができます。

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

AS 
BEGIN 

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

あなたがテーブルでJSONオブジェクトをマップしたい場合は、この

//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)) 

Hereはあなたにjson data

0

SQLに対処するための詳細なアイデアを与えるだろう、非常に良いと詳しい記事で行うことができますサーバー2016にはネイティブなJSONサポートがあります。新しいJSONデータ型(nvarcharに基づいています)と、クエリからの出力をJSON形式に変換するFOR JSONコマンド

Microsoftは別個JSONデータ型が含まれていない - その代わり、場合種類NVARCHAR(n)

の列上で動作するJSON機能の数が(JSONにデータベースの行をパッケージ化する、またはリレーショナルデータにJSONを解析する)が存在しますJSONテキストがある場合は、JSONからデータを抽出したり、組み込み関数JSON_VALUEJSON_QUERY、およびISJSONを使用してJSONが適切にフォーマットされていることを確認できます。より高度なクエリと分析のために、OPENJSON関数はJSONオブジェクトの配列を一連の行に変換できます。返された結果セットに対してSQL問合せを実行できます。最後に、FOR JSON節があり、クエリ結果をJSONテキストとして書式設定できます。

したがって、ストアドプロシージャのパラメータとしてNVARCHAR(MAX)を使用することをお勧めします。

関連する問題