【问题标题】:how can i create array of datas in Stored procedure如何在存储过程中创建数据数组
【发布时间】:2022-09-30 16:29:17
【问题描述】:

此响应来自下面建议的答案。在这里我需要为每个 categoryName 获取 hubxdataitem 数组

[{\"Categoryname\":\"General\",\"DisplayOrder\":1,
\"hubxDataItems\":[{\"Id\":3,\"PatientId\":40,\"CategoryId\":1,\"ItemTitle\":\"Height\",\"ItemValue\":\"158\",\"ItemUnit\":\"cms\",\"IsTestDone\":true,\"ClinicianHubXSign\":0,\"isAprrovedStatus\":false,\"isActive\":true,\"isDeleted\":false,\"Createdby\":1,\"CreatedDate\":\"2022-06-30T22:59:18.7448072\",\"IsTestApproved\":true,\"PhySignDate\":\"2022-08-29T05:40:32.2733333\"}]},
{\"Categoryname\":\"Mental\",\"DisplayOrder\":27},
   i expected \"hubxDataItems\" array here too
{\"Categoryname\":\"Hemoglobin\",\"DisplayOrder\":28},
   i expected \"hubxDataItems\" array here too
{\"Categoryname\":\"SP02\",\"DisplayOrder\":3}]
   i expected \"hubxDataItems\" array here too
  • 您的代码 (.. [dbo].[GetClinicianHubXSign] ..) 似乎特定于 MS SQL,而不是 MySQL...
  • 进行了更改
  • 我们可以实现上面的代码吗?
  • 我不认为sql server知道数组,也许this可以帮助你

标签: sql-server


【解决方案1】:

您想要的结果尚不清楚。但似乎您可以使用类似嵌套的 FOR JSON 子句。

Select  
  hdc.Categoryname,
  hb.hubxDataItems
FROM HubxDataCategory hdc
OUTER APPLY (
 SELECT
  hb.Id,
  hb.PatientId,
  hb.CategoryId,
  hb.ItemTitle,
  hb.ItemValue,
  hb.ItemUnit,
  hb.IsTestDone,
  isNull([dbo].[GetClinicianHubXSign] (hb.patientId,hb.HTAID),0) ClinicianHubXSign,
  isnull([dbo].[GetHubXApproveStatus] (hb.patientId,hb.HTAID,hb.CategoryID),0) isAprrovedStatus,
  hb.categoryname,
  hb.isActive,
  hb.isDeleted,
  hb.Createdby,
  hb.CreatedDate,
  hb.UpdatedBy,
  hb.UpdatedDate,
  hb.DeletedBy,
  hb.DeletedDate,
  htap.IsTestApproved,
  htas.createddate as PhySignDate,
 FROM HubxDataItems hb  
 left join HubxTestApprovedForPatient htap on htap.HTAID = hb.HTAID
 left join HubxTestApprovedSignature htas on htas.HTAID = htap.HTAID
 WHERE hdc.Id = hb.categoryId
   AND hb.isActive = 1
   AND hb.IsDeleted = 0   
 FOR JSON PATH
) hb(hubxDataItems)
FOR JSON PATH;

【讨论】:

  • 我想添加 hubxdataitem 数组并将我显示的上述数据传递给它。我对您的问题的问题是外部应用后的代码是否会充当数组?
  • 你试过了吗?是的,它将返回一个 JSON 数组。 SQL Server 没有本机 Array 类型
  • 新数组启动后我有一个问题,它没有再次打印 hubxdataitems 数组数据
  • 我不确定你的意思,我无法重现它,因为你没有提供样本数据。请给minimal reproducible example,也许使用dbfiddle.uk 来构造您的数据和查询
  • 我已经更新了问题。根据我的预期结果,我分享了一个 json 响应数据。在该响应数据“hubxDataItems”中:为每个 categoryId 打印数组。但是你给出的答案是只打印一次 hubxDataItems 数组。我会分享我从你给出的答案中得到的回应,以便更好地理解
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 2011-03-18
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多