我從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'?這個實體框架? – DavidG
正確,我如何獲得結果集?它應該按照預期的方式工作,用「從...選擇」,不是嗎? –
您需要在存儲過程的頂部設置「set nocount on」嗎? – DaveShaw