4

我需要从存储过程中返回一个数组。而在客户端,最终需要使用 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 表需要返回并检索到客户端

4

2 回答 2

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();

这是一个元组数组。

于 2012-08-31T09:56:58.280 回答
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
于 2012-08-31T10:05:13.630 回答