programing

exec(@sql)에서 값 반환

bestprogram 2023. 7. 6. 22:26

exec(@sql)에서 값 반환

나는 가치를 얻고 싶습니다.Exec(@sql)에 할당합니다.@Rowcount(int)

제 질문은 다음과 같습니다.

'SET @RowCount = (select count(*) 
                    FROM dbo.Comm_Services 
                   WHERE CompanyId = '+cast(@CompanyId as char)+' and '+@condition+')'

한편으로는 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);
DECLARE @nReturn int = 0
EXEC @nReturn = Stored Procedure

오늘 이걸 가지고 놀다가...저는 당신이 또한 사용할 수 있다고 믿습니다.@@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 *를 넣는 것과 반대로)

도움이 되길 바랍니다.

이 패턴을 사용하면 exec 문 결과에서 원하는 유형 또는 결과를 반환할 수 있습니다.

declare @result table ([rowcount] int);

insert into @result ([rowcount])
Exec(@sql)

그게 내 절차야.

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 = '+@CompanyId+' and '+@condition+')'
    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

내가 당신을 올바르게 이해했다면, (아마도 나는)

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

언급URL : https://stackoverflow.com/questions/4130462/return-value-from-execsql