使用SQL Server 2016
,我可以运行这个简单的查询:
SELECT colA, colB, json_query(infoJson) AS Expr1
FROM dbo.Table_1
FOR json auto
我甚至可以将它包装在存储过程中。它运行得很好。
但是当我试图从那个陈述中创建一个视图时,有些奇怪(至少对我而言):
CREATE VIEW [dbo].[View_1]
AS
SELECT colA, colB, json_query(infoJson) AS Expr1
FROM dbo.Table_1
FOR json auto
这是我得到的错误:
消息4511,级别16,状态1,过程View_1,第5行[批次启动第9行] 创建视图或函数失败,因为没有为列1指定列名。
但是,只要我发表评论--for json auto
,就会按预期创建VIEW
。
为什么呢?我非常希望在我的sql视图中有FOR JSON
。
答案 0 :(得分:3)
FOR XML | JSON AUTO
返回单个列(字符LOB)。因此,您需要修改SELECT语句以在视图中返回单个列,如:
CREATE VIEW [dbo].[View_1]
AS
SELECT (
SELECT colA, colB, json_query(infoJson) AS Expr1
FROM dbo.Table_1
FOR json auto
) as X
答案 1 :(得分:0)
您可以将列添加到创建视图语句中:
nameservers panel
nameservers panel