Подтвердить что ты не робот

Возвращаемое значение из exec (@sql)

Я хочу получить значение от Exec(@sql) и назначить @Rowcount(int)

Вот мой запрос:

'SET @RowCount = (select count(*) 
                    FROM dbo.Comm_Services 
                   WHERE CompanyId = '+cast(@CompanyId as char)+' and '[email protected]+')'
4b9b3361

Ответ 1

С одной стороны, вы можете использовать sp_executesql:

exec sp_executesql N'select @rowcount=count(*) from anytable', 
                    N'@rowcount int output', @rowcount output;

С другой стороны, вы можете использовать временную таблицу:

declare @result table ([rowcount] int);
insert into @result ([rowcount])
exec (N'select count(*) from anytable');
declare @rowcount int = (select top (1) [rowcount] from @result);

Ответ 2

что моя процедура

CREATE PROC sp_count
    @CompanyId sysname,
    @codition sysname
    AS
    SET NOCOUNT ON
    CREATE TABLE #ctr
    ( NumRows int )

    DECLARE @intCount int
         , @vcSQL varchar(255)

    SELECT    @vcSQL = ' INSERT #ctr FROM dbo.Comm_Services 
                       WHERE CompanyId = '[email protected]+' and '[email protected]+')'
    EXEC      (@vcSQL)

    IF @@ERROR = 0
    BEGIN
         SELECT    @intCount = NumRows
         FROM #ctr

         DROP TABLE #ctr
         RETURN @intCount
    END
    ELSE
    BEGIN
         DROP TABLE #ctr
         RETURN -1
    END
    GO

Ответ 3

Играла с этим сегодня... Я верю, что вы также можете использовать @@ROWCOUNT, например:

DECLARE @SQL VARCHAR(50)
DECLARE @Rowcount INT
SET @SQL = 'SELECT 1 UNION SELECT 2'
EXEC(@SQL)
SET @Rowcount = @@ROWCOUNT
SELECT @Rowcount

Затем замените "SELECT 1 UNION SELECT 2" на фактический выбор без счета. Я бы предложил просто положить 1 в свой выбор, например:

SELECT 1
FROM dbo.Comm_Services
WHERE....
....

(в отличие от размещения SELECT *)

Надеюсь, что это поможет.

Ответ 4

объявить @nReturn int = 0 EXEC @nReturn = Хранимые процедуры

Ответ 5

Если я правильно вас понимаю (я, вероятно, не знаю)

'SELECT @RowCount = COUNT(*)
                   FROM dbo.Comm_Services
                   WHERE CompanyId = ' + CAST(@CompanyId AS CHAR) + '
                   AND ' + @condition