2013-12-13 1 views
0

선택한 열 수가 고정되어 있지 않아 쿼리 런타임을 생성하고 저장 프로 시저에서 실행하는 쿼리를 작성하고 있습니다. 하지만 난 레코드의 수에 따라 내 쿼리에서 일부 작업을 수행하려는 때문에 내가 지금 막혔어요하지만 난 내 쿼리가Count 변수에 동적 빌드 쿼리의 레코드 수

DECLARE @RowCount AS numeric(18,0) 
DECLARE @SQL AS VARCHAR(MAX) 
Set @SQL ='Select Count(*) From ((Select Col1,Col2,Col3,Col4 From Table1)) as rowcount' 
Exec(@SQL) 
Set @RowCount = ????.. 
같은 곳 동적 쿼리에서 기록의 숫자의 수를 얻는 방법을 모른다

dynaimc 쿼리의 레코드 수를 어떻게 알 수 있습니까?

+1

당신은 의미합니까 - 열의 수를 얻으시겠습니까? –

+0

아니요. 의미 Count of rows 행의 수 –

+0

쿼리에서 select count를 선택하지 않는 이유는 무엇입니까? –

답변

4

WHERE 절에 조건이 제공되지 않으면 레코드 수는 SELECT 목록의 열과 독립적입니다. 당신이 행 개수 값을 저장하려면

그냥 그래서이

DECLARE @SQL AS VARCHAR(MAX) 
Set @SQL ='Select COUNT(*) From Table1' 
Exec(@SQL) 

을 테이블 변수를 사용하여 삽입 반환 그것을

DECLARE @SQL AS VARCHAR(MAX) 
    DECLARE @rowCountTable TABLE(row_count INT) 

    Set @SQL ='Select COUNT(*) From Table1' 

    INSERT INTO @rowCountTable 
    Exec(@SQL) 


    SELECT * FROM @rowCountTable 

또한 OUTPUT 변수를 사용하여 값을 검색 할 수

DECLARE @retCount int 
DECLARE @SQL AS NVARCHAR(MAX) 
DECLARE @outPut NVARCHAR(50); 


SET @SQL = N'Select @retvalOUT=COUNT(*) From Table1' 
SET @outPut = N'@retvalOUT int OUTPUT'; 

EXEC sp_executesql @SQL, @outPut, @[email protected] OUTPUT; 

SELECT @retCount; 
+0

나는 내 문제 –