将Json表中的数据插入到已在SQL中创建的视图中

将Json表中的数据插入到已在SQL中创建的视图中,sql,json,sql-server,view,insert,Sql,Json,Sql Server,View,Insert,我有一个问题,我必须从一个Json中插入数据,该Json存储在一个有JU字段的表中,直接插入到视图中,但我知道没有任何方法可以更新或插入数据到视图中,有人知道如何调整或设置我的视图以从表中插入数据(PS:我不能使用insert into或select into) 我的第一个包含Json数据的表: | JsonOutPut | |------------------

我有一个问题,我必须从一个Json中插入数据,该Json存储在一个有JU字段的表中,直接插入到视图中,但我知道没有任何方法可以更新或插入数据到视图中,有人知道如何调整或设置我的视图以从表中插入数据(PS:我不能使用insert into或select into)

我的第一个包含Json数据的表:

|  JsonOutPut                                                                   |
|-------------------------------------------------------------------------------|
|[{"FID":1,"Fname":"cake","Fcount":5,"FDate":"2020-02-13","Fregion":"UK"},...]  |
我的看法应该是这样的:

| FID | Fname | Fcount| FDate    | Fregion |
|-----|-------|-------|----------|---------|
|  1  | cake  |   5   |2020-02-13|    UK   |

我不想创建新表

我编写了查询,但它有一个错误:

create table jtable(JsonOutPut nvarchar(max));
go
insert into jtable(JsonOutPut)
values('[{"FID":1,"Fname":"cake","Fcount":5,"FDate":"2020-02-13","Fregion":"UK"},{"FID":2,"Fname":"pie","Fcount":15,"FDate":"2020-02-15","Fregion":"UK"}]'),
('[{"FID":100,"Fname":"cake100","Fcount":1005,"FDate":"2020-02-13","Fregion":"UK100"},{"FID":1002,"Fname":"pie100","Fcount":10015,"FDate":"2020-02-15","Fregion":"UK100"}]');
go

create view jview
as
select oj.FID, oj.Fname, oj.Fcount, oj.FDate, oj.Fregion
from jtable
cross apply openjson(JsonOutPut) 
with
(
FID int '$.FID',
Fname varchar(100) '$.Fname',
Fcount int '$.Fcount',
FDate date '$.FDate',
Fregion varchar(20) '$.Fregion'
) as oj
go

select *
from jview
go

drop view if exists jview
drop table if exists jtable
go
CREATE PROC [dbo].[viewJson]
AS
BEGIN

DECLARE @OpenJson NVARCHAR(MAX) = (SELECT * FROM FoodSara_tbl FOR JSON AUTO)

SELECT * 
FROM OPENJSON(@OpenJson)

WITH (FID INT,
Fname NVARCHAR(50),
Ftype NVARCHAR(20),
Fcount INT,
Fdate VARCHAR(400),
Fregion NVARCHAR(50),
Fdescription NVARCHAR(100)) AS SM


EXEC('CREATE VIEW Json1 AS SELECT * FROM SM')

END

SQL Server中的视图不存储任何数据—它只显示表中的数据。因此,您不能将数据插入到视图中—您将数据插入到基础表中,视图将显示数据……我知道我想以正确的格式将我的表从Json直接显示到视图中!这对我没有帮助,我不想创建新表!顺便提一下tnx@SaraMoradi您不必创建新表,这个答案的createtable部分只是提供一个完整的工作示例。您只需使用
create view
部分即可。有关更多信息,请参阅。第一条语句只是为视图设置表,第二条语句是您需要创建的视图,第三条语句只是显示视图按照您的要求工作。正如我所说,我想创建一个视图,然后将数据从这个Json表插入到该视图中@萨拉莫拉迪。向视图中插入数据实际上没有意义——我的意思是,如果您有一个可更新的视图,您可以使用
insert
。无论如何,这回答了您问题中最难的部分,即解析数据。事实上,我编写的proc比您的更好、更高效,但正如我所说的,我希望将数据插入视图中