Si encuentra el mensaje de error 11535, nivel 16 al intentar ejecutar un procedimiento almacenado, es porque no definió suficientes conjuntos de resultados en WITH RESULT SETS
cláusula.
Algunos procedimientos almacenados devuelven varios conjuntos de resultados. Cuando se usa WITH RESULT SETS
cláusula, debe definir cada conjunto de resultados esperado. Debe hacer esto incluso si solo desea cambiar la definición de uno o algunos de los conjuntos de resultados.
Para corregir este error, simplemente agregue los conjuntos de resultados adicionales a WITH RESULT SETS
cláusula, cada una separada por una coma.
También puede solucionarlo eliminando WITH RESULT SETS
cláusula, pero asumiré que lo está utilizando por una razón (es decir, necesita redefinir el conjunto de resultados devuelto por el procedimiento).
Ejemplo de código que causa el error
Supongamos que tenemos un procedimiento almacenado que devuelve tres conjuntos de resultados.
EXEC sp_getCityStateCountryByCityId @CityId = 1;
Resultado:
+------------+----------------------------+-----------------------------+ | 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)
Y digamos que queremos usar WITH RESULT SETS
cláusula para redefinir las columnas de solo el primer conjunto de resultados.
Hacerlo con el siguiente código producirá un error.
EXEC sp_getCityStateCountryByCityId @CityId = 1
WITH RESULT SETS
(
(
[City] nvarchar(50),
[Population] int,
[Valid From] date
)
);
Resultado:
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.
Esto se debe a que no incluimos los otros conjuntos de resultados en WITH RESULT SETS
cláusula.
La solución
La solución es incluir los otros conjuntos de resultados en WITH RESULT SETS
cláusula.
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
)
);
Resultado:
+------------+--------------+--------------+ | 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)
El problema ya se ha solucionado.