Search code examples
sqlsql-serversql-server-2005t-sqldynamic-sql

Getting result of dynamic SQL into a variable for sql-server


Executing dynamic SQL as follows in Stored Procedure:

DECLARE @sqlCommand nvarchar(1000)
DECLARE @city varchar(75)
SET @city = 'London'
SET @sqlCommand = 'SELECT COUNT(*) FROM customers WHERE City = @city'
EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75)', @city = @city

How do I use the count(*) column value as return value in the SP?


Solution

  • DECLARE @sqlCommand NVARCHAR(1000)
    DECLARE @count INT
    DECLARE @city VARCHAR(75)
    SET @city = 'New York'
    
    SET @sqlCommand = 'SELECT @cnt=COUNT(*) FROM customers WHERE City = @city'
    EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75), @cnt int OUTPUT', @city = @city, @cnt = @count OUTPUT
    
    SELECT @count