EXECUTE statement failed because its WITH RESULT SETS clause specified %d column(s) for result set number %d, but the statement sent %d column(s) at run time is one of the new error messages seen in SQL Server 2012. This error message is due to the invalid use of new feature EXEC WITH RESULT SETS.
Let’s discuss this in detail:
Message Number: 11537
Severity : 16
Error Message: EXECUTE statement failed because its WITH RESULT SETS clause specified %d column(s) for result set number %d, but the statement sent %d column(s) at run time.
Error Generation:
Let me create a sample stored procedure to generate this error.
CREATE PROCEDURE usp_Resultset AS SELECT 'A' AS [First Letter], 'B' as [Second Letter] GO EXEC usp_Resultset
You can see that the above stored procedure is executed successfully and it has ONE result sets with TWO columns.
Lets try to execute it using WITH RESULT SETS clause.
USE tempdb GO EXEC usp_Resultset WITH RESULT SETS (([1st Letter] VARCHAR(1) )); --OUTPUT
EXECUTE statement failed because its WITH RESULT SETS clause specified 1 column(s) for result set number 1, but the statement sent 2 column(s) at run time.
Ooops…… I am unable to execute it properly. It returned the error message.
Resolution:
Why this error ? Because, the above stored procedure returns ONE result sets with TWO columns but we defined WITH RESULT SETS clause for ONE column ONLY. Lets rewrite the script and define TWO columns in the result sets (the same number of columns in the result sets returned by stored procedure) to avoid this error.
USE tempdb GO EXEC usp_Resultset WITH RESULT SETS (([1st Letter] VARCHAR(1) , [2nd Letter] VARCHAR(1) )); --OUTPUT
Conclusion :
Remember, whenever you use any stored procedure using WITH RESULT SETS clause, make sure you use exactly the same number of columns in result set returned by stored procedure to avoid such errors.
Reblogged this on Sutoprise Avenue, A SutoCom Source.