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

时间:2012-08-31 09:51:47

标签: 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

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

2 个答案:

答案 0 :(得分:7)

@ARRAY不是数组:它是一个表。获得一张桌子的机制很简单,也很好用:

select * from @ARRAY

要在客户端获取该功能,请使用ExecuteReader或类似DataTable的内容,如果它让您满意的话。或者像dapper这样的东西:

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

这是一个元组数组。

答案 1 :(得分:2)

create procedure strange_procedure as
begin

DECLARE @ARRAY TABLE(id int not null identity primary key, value varchar(50))

insert into @ARRAY (value) values ('This value')

select  *  from @ARRAY


end