SQL Server:如何从存储过程中获取大量JSON

时间:2017-11-03 07:24:13

标签: sql-server stored-procedures

我创建了一个返回JSON的存储过程。但它不返回完整的JSON只返回有限的JSON。我在Select语句后使用了“For JSON auto”。有任何解决方案可以获得所有JSON吗?

2 个答案:

答案 0 :(得分:1)

如果您正在使用任何Cast或隐蔽操作。使用VARCHAR(MAX)而不是VARCHAR()。

在这种情况下我见过这个问题。

此外,如果您正在使用打印输出,则文本可能会被截断,但您可以使用“选择”或“输出”参数。

输出nvarchar(max)类型的输出参数

或查看此链接:

Format Query Results as JSON with FOR JSON (SQL Server)

这可能会有所帮助

答案 1 :(得分:0)

我在这里找到了我的解决方案:https://docs.microsoft.com/en-us/sql/relational-databases/json/format-query-results-as-json-with-for-json-sql-server?view=sql-server-ver15#output-of-the-for-json-clause(与上面相同,但有一个特定的部分)

问题是我认为 SQL Server 正在返回单行/单元格的 JSON 数据,因为 SSMS 就是这样显示它的。事实是它把它分成了多行。

我使用 ExecuteScalar() 在 .NET 中检索数据,但我需要使用 ExecuteReader(),并将所有行连接在一起。一旦我这样做了,我就可以毫无问题地反序列化 JSON。