Получение результата динамического SQL в переменную для sql-сервера

Выполнение динамического SQL следующим образом в хранимой процедуре:

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

Как использовать значение столбца count (*) в качестве возвращаемого значения в SP?

Ответы на вопрос(6)

DECLARE @sqlCommand nvarchar(1000)
DECLARE @city varchar(75)
DECLARE @cnt int
SET @city = 'London'
SET @sqlCommand = 'SELECT @cnt=COUNT(*) FROM customers WHERE City = @city'
EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75)', @city = @city
RETURN @cnt
 Sage01 окт. 2010 г., 17:44
Я думаю, что ваш ответ оборван.
 it3xl19 авг. 2018 г., 15:34
Msg 137,Must declare the scalar variable "@cnt".  Сообщение 178,A RETURN statement with a return value cannot be used in this context., Хорошая работа, братан))

динамическая версия

    ALTER PROCEDURE [dbo].[ReseedTableIdentityCol](@p_table varchar(max))-- RETURNS int
    AS
    BEGIN
        -- Declare the return variable here
       DECLARE @sqlCommand nvarchar(1000)
       DECLARE @maxVal INT
       set @sqlCommand = 'SELECT @maxVal = ISNULL(max(ID),0)+1 from '[email protected]_table
       EXECUTE sp_executesql @sqlCommand, N'@maxVal int OUTPUT',@[email protected] OUTPUT
       DBCC CHECKIDENT(@p_table, RESEED, @maxVal)
    END


exec dbo.ReseedTableIdentityCol @p_table='Junk'

это может быть решением?

declare @step2cmd nvarchar(200)
DECLARE @rcount NUMERIC(18,0)   
set @step2cmd = 'select count(*) from uat.ap.ztscm_protocollo' --+ @nometab
EXECUTE @rcount=sp_executesql @step2cmd
select @rcount
 AleX_29 июн. 2018 г., 01:12
Это не работает!

наверное, пробовали это, но ваши спецификации таковы, что вы можете сделать это?

DECLARE @city varchar(75)
DECLARE @count INT
SET @city = 'London'
SELECT @count = COUNT(*) FROM customers WHERE City = @city
 Sage01 окт. 2010 г., 17:45
Или: ВЫБЕРИТЕ @count = COUNT (*) ОТ клиентов, ГДЕ Город = @city
 Brad01 окт. 2010 г., 17:49
@Sage, @OMG Пони: хороший звонок. Это совершенно другое программирование в текстовом поле в Интернете. :)
 OMG Ponies01 окт. 2010 г., 17:47
Комментарий Sage на самом деле является предпочтительным форматом.
 vMYQUERY := 'SELECT COUNT(*) FROM ALL_OBJECTS WHERE OWNER = UPPER(''MFI_IDBI2LIVE'') AND OBJECT_TYPE = ''TABLE'' 
    AND OBJECT_NAME  =''' || vTBL_CLIENT_MASTER || '''';
    PRINT_STRING(VMYQUERY);
    EXECUTE IMMEDIATE  vMYQUERY INTO VCOUNTTEMP ;
 Robert Lujo23 мая 2015 г., 13:06
Это не относится к серверу sql.
Решение Вопроса
DECLARE @sqlCommand nvarchar(1000)
DECLARE @city varchar(75)
declare @counts int
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, @[email protected] OUTPUT
select @counts as Counts
 Tab Alleman20 дек. 2016 г., 17:18
Нет ли решения, которое не требует добавления выходной переменной в динамический оператор ???
 Peter Lindholm01 окт. 2010 г., 19:28
Спасибо. Я пропустил ключевое слово OUTPUT в N '@ city nvarchar (75), @ cnt int OUTPUT'.
 OMG Ponies01 окт. 2010 г., 17:46
 Michelle Turner14 янв. 2019 г., 16:50
вау это дикарь и дал мне самый странный холодок ботаник сейчас +1

Ваш ответ на вопрос