如何从存储过程返回一个数组?

Aad*_*ada 4 c# sql-server ado.net

我需要从存储过程返回一个数组.在客户端,最后需要使用c#和ado.net检索数据.

CREATE PROCEDURE [dbo].[usp_testing]

AS
BEGIN

DECLARE @ARRAY TABLE(sno int,id nvarchar(50)

INSERT @ARRAY(sno,id) values(1,'v123')
INSERT @ARRAY(sno,id) values(2,'v124')
INSERT @ARRAY(sno,id) values(3,'v124')
END
Run Code Online (Sandbox Code Playgroud)

需要返回此@Array表并将其检索到客户端

Mar*_*ell 7

@ARRAY不是数组:它是一个表.获得表格的机制简单而且实践得很好:

select * from @ARRAY
Run Code Online (Sandbox Code Playgroud)

要在客户端获取它,请使用ExecuteReader或类似DataTable的东西,如果它让你开心.或者像小巧玲珑的东西:

var arr = connection.Query(
    "usp_testing", commandType: CommandType.StoredProcedure)
    .Select(row => Tuple.Create((int)row.sno, (string)row.id)).ToArray();
Run Code Online (Sandbox Code Playgroud)

这是一组元组.