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



我遇到了一个问题,我必须从Json中插入数据,该Json存储在一个只有一个字段的表中,只需直接插入到视图中,但我知道没有任何方法可以更新或将数据插入视图中,有人知道我如何调整或设置我的视图以从我的表中插入数据吗(附言:我不能使用插入或选择(

我的第一个有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

最新更新