誰かがC#ASP.Net Core Web ApiプロジェクトでADO.Netを使用してSQL Server 2016ストアドプロシージャにJSONタイプをパラメータとして渡す方法の例を与えることができますか? SQL Server 2016のストアドプロシージャの例と、C#ASP.Net Core Web ApiでのJSON型の受け渡しが必要です。
SQLサーバーにはjson data type
がありません。単にjson
をvarchar
としてストアドプロシージャに送信できます。
Jsonをテーブルにマッピングする場合は、OPENJSON
を使用してデータをrows
およびcolumns
に変換できます。
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))
ここ は、json data
を処理するための詳細なアイデアを提供する非常に優れた詳細な記事です。
SQL Server 2016にはネイティブJSONサポートがあります-nvarchar
に基づく新しいJSONデータ型と、クエリからの出力をJSON形式に変換するFOR JSONコマンドがあります
Microsoftには個別のJSONデータ型は含まれていませんでした-代わりに、NVARCHAR(n)
型の列で動作するJSON関数(データベース行をJSONにパッケージ化する、またはJSONをリレーショナルデータに解析する)がいくつかあります
JSONテキストがある場合、JSONからデータを抽出したり、組み込み関数_JSON_VALUE
_、_JSON_QUERY
_、およびISJSON
を使用してJSONが適切にフォーマットされていることを確認できます。より高度なクエリと分析のために、OPENJSON
関数はJSONオブジェクトの配列を一連の行に変換できます。返された結果セットに対して任意のSQLクエリを実行できます。最後に、クエリ結果をJSONテキストとしてフォーマットできるようにする_FOR JSON
_句があります。
したがって、ストアドプロシージャのパラメーターとしてNVARCHAR(MAX)
を使用することをお勧めします。