Wenn in SQL Server die Fehlermeldung 11537, Ebene 16 auftritt, versuchen Sie möglicherweise, eine gespeicherte Prozedur mithilfe von WITH RESULT SETS
auszuführen -Klausel, aber Sie haben nicht alle Spalten in Ihre Definition aufgenommen.
Wenn Sie die WITH RESULT SETS
verwenden -Klausel in EXECUTE
/EXEC
-Anweisung müssen Sie eine Definition für alle Spalten bereitstellen, die von der gespeicherten Prozedur zurückgegeben werden. Wenn Sie dies nicht tun, erhalten Sie diesen Fehler.
Beispiel
Die folgende gespeicherte Prozedur gibt drei Spalten zurück.
EXEC sp_getCityById @CityId = 1;
Ergebnis:
+------------+----------------------------+-----------------------------+ | CityName | LatestRecordedPopulation | ValidFrom | |------------+----------------------------+-----------------------------| | Aaronsburg | 613 | 2013-01-01 00:00:00.0000000 | +------------+----------------------------+-----------------------------+
Angenommen, wir möchten einige der Spalten neu definieren. Wir können die WITH RESULT SETS
verwenden Klausel dazu.
Problemcode
Wenn wir jedoch nicht alle drei Spalten in diese Klausel aufnehmen, erhalten wir eine Fehlermeldung.
EXEC sp_getCityById @CityId = 1
WITH RESULT SETS
(
(
[City] nvarchar(50),
[Population] int
)
);
Ergebnis:
Msg 11537, Level 16, State 1, Procedure sp_getCityById, Line 5 EXECUTE statement failed because its WITH RESULT SETS clause specified 2 column(s) for result set number 1, but the statement sent 3 column(s) at run time.
Die Fehlermeldung teilt uns mit, wie viele Spalten wir angegeben haben und wie viele von der gespeicherten Prozedur gesendet wurden.
In diesem Fall haben wir zwei Spalten angegeben, aber die Prozedur hat drei gesendet.
Guter Code
Wir können dieses Problem beheben, indem wir die dritte Spalte einbeziehen.
EXEC sp_getCityById @CityId = 1
WITH RESULT SETS
(
(
[City] nvarchar(50),
[Population] int,
[Valid From] date
)
);
Ergebnis:
------------+--------------+--------------+ | City | Population | Valid From | |------------+--------------+--------------| | Aaronsburg | 613 | 2013-01-01 | +------------+--------------+--------------+