【发布时间】:2017-12-22 05:23:53
【问题描述】:
我正在从 ASP.NET 调用存储过程来获取一些数据以存储在数组中。问题是为了返回我需要的值,我首先必须调用另一个存储过程并将结果转储到临时表中。这会在 SQL 端生成正确的记录,但是当我在 ASP 中调用它时,它会将最后一条记录的索引作为 int 返回。因此,即使 SQL 生成正确的结果,ASP 在调用存储过程时也无法访问它们。
我的 SQL 设置如下:
IF OBJECT_ID('#temp') IS NOT NULL
BEGIN
DROP TABLE #temp
END
CREATE TABLE #temp
(
EventID nvarchar(50),
RunDate date,
SectionCode nvarchar(50),
SectionMapCode nvarchar(50),
DispSort int,
Capacity nvarchar(50),
Attendance int,
PctCap int,
HeatColor nvarchar(50)
)
DECLARE @runDate date = GETDATE()
--Insert results from killsheet sproc into temp table
INSERT #temp Exec GameDayReporting.dbo.uspGetEventKillSheetDetailedReport @EventID, @runDate;
select Capacity from #temp;
SQL 输出:
ASP 调用:
string option = TempData["option"].ToString();
var secCapacity = db.uspGetSecCapacityNew(option);
ViewData["Capacity"] = secCapacity;
System.Diagnostics.Debug.WriteLine("capacity " + secCapacity);
以及 ASP 输出:
capacity 261
注意secCapacity 如何等于 261,这是 SQL 结果中的最后一个行号。
那么我如何访问实际的查询结果而不是数据的大小?
【问题讨论】:
-
存储过程返回的是行数,不是结果集。
db这里是什么?这是实体框架吗? -
正确,如何获取结果集?
Select From应该可以正常工作,不是吗? -
您需要在存储过程的顶部添加
set nocount on吗? -
您需要将存储过程作为函数导入。看看这里stackoverflow.com/questions/32140774/…
-
@DaveShaw 打得好...
标签: c# asp.net sql-server entity-framework tsql