ストアドプロシージャの実行中にエラーメッセージ11535、レベル16が発生した場合は、WITH RESULT SETS
で十分な結果セットを定義していなかったことが原因です。 条項。
一部のストアドプロシージャは、複数の結果セットを返します。 WITH RESULT SETS
を使用する場合 句では、期待される各結果セットを定義する必要があります。結果セットの1つまたは一部の定義のみを変更する場合でも、これを行う必要があります。
このエラーを修正するには、追加の結果セットをWITH RESULT SETS
に追加するだけです。 句。それぞれがコンマで区切られます。
WITH RESULT SETS
を削除して修正することもできます 条項ですが、何らかの理由で使用していると想定します(つまり、プロシージャによって返される結果セットを再定義する必要があります)。
エラーの原因となるコードの例
3つの結果セットを返すストアドプロシージャがあるとします。
EXEC sp_getCityStateCountryByCityId @CityId = 1;
結果:
+------------+----------------------------+-----------------------------+ | 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)
そして、WITH RESULT SETS
を使用したいとします。 最初の結果セットのみの列を再定義する句。
次のコードで実行すると、エラーが発生します。
EXEC sp_getCityStateCountryByCityId @CityId = 1
WITH RESULT SETS
(
(
[City] nvarchar(50),
[Population] int,
[Valid From] date
)
);
結果:
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.
これは、他の結果セットをWITH RESULT SETS
に含めなかったためです。 条項。
ソリューション
解決策は、他の結果セットをWITH RESULT SETS
に含めることです。 条項。
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
)
);
結果:
+------------+--------------+--------------+ | 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)
この問題は修正されました。