我有许多存储过程,它们将查询结果作为一个Json字符串返回。下面是我的一个存储过程中的查询示例,该存储过程使用Microsoft SQL Server的FOR JSON功能返回JSON:
SELECT
V.*
FROM
ClassPerson CP
INNER JOIN
PersonActive PA ON (CONVERT(nvarchar(128), PA.PersonActiveId) = @usrGuid AND CP.PersonId = PA.personId)
INNER JOIN
ClassPerson CP2 ON (CP2.classId = CP.ClassId)
INNER JOIN
V_Student V ON (V.PersonId = CP2.PersonId)
FOR JSON PATH, ROOT('AllRecord')这是上面的查询可以返回的字符串:
{
"AllRecord": [
{
"PersonId": 179,
"VN_ID": "VN 1557",
"FirstName": "Selena",
"LastName": "Le",
"BirthDate": "2012-07-10",
"Gender": "Female",
"Profession": "S",
"HomePhone": 3127314009,
"Father": "Lê p. Nguyen",
"FatherPhone": 3127314009,
"Mother": "Ho Thu",
"MotherPhone": 3127314009,
"EmergencyContact": "Nguyen ngoc Hien",
"Member": "N",
"ActiveFlag": 1,
"DateCreated": "2021-05-22T19:15:07.290",
"Modified": "1900-01-01T00:00:06.797",
"ModifierName": "dbo",
"AddressId": 219,
"EmailId": 181,
"Street1": "4014 Two Bridge Ct",
"City": "Buford",
"StateAbr": "GA",
"ZipCode": "30518",
"Email": "nguyenle17@gmail.com"
}
]
}问题是,如果查询返回多条记录,PHP代码就会在字节#2033处被截断,从而使Json字符串无效。我尝试了许多不同的获取方法,但它仍然是相同的。请注意,我的所有存储过程在C#上都工作得很好。
有没有办法将php中的最大字符串增加到几百万字节?我的意思是,这是一个真实的世界,最多2032字节是一个笑话。
发布于 2021-06-04 23:31:25
将JSON查询放入另一个SELECT中
SELECT (
SELECT V.* FROM ClassPerson CP
INNER JOIN PersonActive PA ON(CONVERT(nvarchar(128),PA.PersonActiveId) = @usrGuid AND CP.PersonId = PA.personId)
INNER JOIN ClassPerson CP2 ON(CP2.classId = CP.ClassId)
INNER JOIN V_Student V ON(V.PersonId = CP2.PersonId)
FOR JSON PATH, ROOT('AllRecord')
);
-- alternatively
DECLARE @json nvarchar(max) = (
SELECT V.* FROM ClassPerson CP
INNER JOIN PersonActive PA ON(CONVERT(nvarchar(128),PA.PersonActiveId) = @usrGuid AND CP.PersonId = PA.personId)
INNER JOIN ClassPerson CP2 ON(CP2.classId = CP.ClassId)
INNER JOIN V_Student V ON(V.PersonId = CP2.PersonId)
FOR JSON PATH, ROOT('AllRecord')
);
SELECT @json;https://stackoverflow.com/questions/67838029
复制相似问题