Wenn beim Versuch, eine gespeicherte Prozedur auszuführen, die Fehlermeldung 11535, Ebene 16 auftritt, liegt dies daran, dass Sie nicht genügend Ergebnismengen in den WITH RESULT SETS
definiert haben Klausel.
Einige gespeicherte Prozeduren geben mehrere Resultsets zurück. Bei Verwendung der WITH RESULT SETS
-Klausel müssen Sie jede erwartete Ergebnismenge definieren. Dies ist auch dann erforderlich, wenn Sie nur die Definition einer oder einiger Ergebnismengen ändern möchten.
Um diesen Fehler zu beheben, fügen Sie einfach die zusätzlichen Ergebnissätze zu den WITH RESULT SETS
hinzu Klausel, jeweils getrennt durch ein Komma.
Sie können es auch beheben, indem Sie WITH RESULT SETS
entfernen -Klausel, aber ich gehe davon aus, dass Sie sie aus einem bestimmten Grund verwenden (d. h. Sie müssen die von der Prozedur zurückgegebene Ergebnismenge neu definieren).
Beispiel für Code, der den Fehler verursacht
Angenommen, wir haben eine gespeicherte Prozedur, die drei Ergebnismengen zurückgibt.
EXEC sp_getCityStateCountryByCityId @CityId = 1;
Ergebnis:
+------------+----------------------------+-----------------------------+ | CityName | LatestRecordedPopulation | ValidFrom | |------------+----------------------------+-----------------------------| | Aaronsburg | 613 | 2013-01-01 00:00:00.0000000 | +------------+----------------------------+-----------------------------+ (1 row affected) +---------------------+---------------------+----------------------------+ | StateProvinceCode | StateProvinceName | LatestRecordedPopulation | |---------------------+---------------------+----------------------------| | PA | Pennsylvania | 13284753 | +---------------------+---------------------+----------------------------+ (1 row affected) +-----------------+---------------+----------------------------+ | IsoAlpha3Code | CountryName | LatestRecordedPopulation | |-----------------+---------------+----------------------------| | USA | United States | 313973000 | +-----------------+---------------+----------------------------+ (1 row affected)
Und sagen wir, wir wollen die WITH RESULT SETS
verwenden -Klausel, um nur die Spalten der ersten Ergebnismenge neu zu definieren.
Wenn Sie dies mit dem folgenden Code tun, wird ein Fehler erzeugt.
EXEC sp_getCityStateCountryByCityId @CityId = 1
WITH RESULT SETS
(
(
[City] nvarchar(50),
[Population] int,
[Valid From] date
)
);
Ergebnis:
Msg 11535, Level 16, State 1, Procedure sp_getCityStateCountryByCityId, Line 14 EXECUTE statement failed because its WITH RESULT SETS clause specified 1 result set(s), and the statement tried to send more result sets than this.
Dies liegt daran, dass wir die anderen Ergebnismengen nicht in die WITH RESULT SETS
aufgenommen haben Klausel.
Die Lösung
Die Lösung besteht darin, die anderen Ergebnismengen in die WITH RESULT SETS
aufzunehmen Klausel.
EXEC sp_getCityStateCountryByCityId @CityId = 1
WITH RESULT SETS
(
(
[City] nvarchar(50),
[Population] int,
[Valid From] date
),
(
[State Code] nvarchar(5),
[State Name] nvarchar(50),
[Population] int
),
(
[Country Code] nvarchar(3),
[Country Name] nvarchar(60),
[Population] int
)
);
Ergebnis:
+------------+--------------+--------------+ | City | Population | Valid From | |------------+--------------+--------------| | Aaronsburg | 613 | 2013-01-01 | +------------+--------------+--------------+ (1 row affected) +--------------+--------------+--------------+ | State Code | State Name | Population | |--------------+--------------+--------------| | PA | Pennsylvania | 13284753 | +--------------+--------------+--------------+ (1 row affected) +----------------+----------------+--------------+ | Country Code | Country Name | Population | |----------------+----------------+--------------| | USA | United States | 313973000 | +----------------+----------------+--------------+ (1 row affected)
Das Problem wurde nun behoben.