创建View和For Json子句

时间:2016-06-06 13:51:41

标签: sql json sql-server-2016

使用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

2 个答案:

答案 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