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