J'appelle une procédure stockée à partir d'ASP.NET pour récupérer des données à stocker dans un tableau. Le problème est que pour retourner les valeurs dont j'ai besoin, je dois d'abord appeler une autre procédure stockée et vider les résultats dans une table temporaire. Cela génère les enregistrements corrects du côté SQL, mais lorsque je l'appelle dans ASP, il renvoie l'index du dernier enregistrement sous la forme d'un int. Ainsi, même si SQL génère les résultats corrects, ASP ne peut pas y accéder lors de l'appel de la procédure stockée.La procédure stockée renvoie le nombre de lignes à la place des valeurs de colonne
Voilà comment je mon SQL mis en place:
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;
La sortie SQL:
L'appel ASP:
string option = TempData["option"].ToString();
var secCapacity = db.uspGetSecCapacityNew(option);
ViewData["Capacity"] = secCapacity;
System.Diagnostics.Debug.WriteLine("capacity " + secCapacity);
Et la sortie ASP:
capacity 261
Notez comment secCapacity
est égal à 261, qui est le dernier numéro de ligne dans le résultat SQL.
Alors, comment puis-je accéder aux résultats de la requête plutôt qu'à la taille des données?
Le retour de procédure stockée est le nombre de lignes, pas le jeu de résultats. Qu'est-ce que 'db' ici? Ce cadre d'entité est-il – DavidG
Correct, comment puis-je obtenir le jeu de résultats? Cela devrait fonctionner comme prévu avec un 'Select From ', non? –
avez-vous besoin d'un 'set nocount on' en haut de votre proc-stocké? – DaveShaw