SQL Server 返回存储过程中声明的数组

xbp102n0  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(296)

我现在遇到了一个存储过程的问题。我必须从那个存储过程返回一个计算数据的数组/列表。
使用Entity Framework在服务器上检索它,但问题不在这里。
我要返回的数据如下所示:

field1 : int,
field2 : string,
field3 : int,
calculatedData : List<int>

目前,我的过程如下所示:

CREATE PROCEDURE [dbo].[SP_GDF_UNITE_Previsionnel]
AS
    DECLARE @calculatedData TABLE(jour int, valeur int)

    SELECT
        field1,
        field2 , 
        field3
    FROM
        (... content )
    ...

我想退掉calculatedData,但我不知道该怎么做。
或许通过改变我的程序结构?
希望有人能帮我做这件事。
尝试将数组包含在我的选择中,但不起作用。在Internet上找不到有关如何操作的任何信息。SELECT... FROM必须在过程中的此处。

qacovj5a

qacovj5a1#

方法一
从你的select语句返回一个json结构。嵌套的json在你的json数据中就像一个数组。根据你的例子,json子查询可以有一个或多个记录。
现在,您可以将json数据转换为python中的diction,并递归地检索值

/****** Script for SelectTopNRows command from SSMS  ******/
select 
      Field1
      ,Field2
      ,Field3
      ,(select * from dbo.myTable myTable2 
            where myTable2.Field1=myTable.Field1
            for json path) as data
  FROM dbo.myTable myTable
  where myTable.Field1=123
  for json path

方法二
尝试创建一个临时表而不是一个数组然后插入值到临时表.

declare @tmp_table as table(newid uniqueidentifier , field1 varchar(10));

insert into @tmp_table(newid,field1) values(newid(),'a'),(newid(),'b')
select * from @tmp_table

现在可以使用newid作为哈希键来更新表,类似于模拟数组的字典。

相关问题