2017-05-02 2 views
0

질문이 많이 있지만, 거의 모든 솔루션을 시도했지만 그 코드를 작동시킬 수는 없습니다. M은 일을 '-. 내가 행을 루프 카운터로 그것을 사용하고 삭제할 수 있도록 테이블의 행 수를 찾기 위해 노력하고있어varchar를 INT로 변환 할 때 변환이 실패했습니다.

@rc@tbname은 VARCHAR (500) 및 @id입니다, INT이다 또한 INT입니다

이것은 내 검색어입니다.

set @rc='select count(*) from dbo.[' + @tbname + '] where id = ' + @id 

는 또한 시도이 :

set @rc='select cast(count(*) as varchar) from dbo.[' + @tbname + '] where id = ' + @id 

set @rc='select count(*) from dbo.[' + @tbname + '] where id = ' + cast(@id as varchar) 

그리고 거기뿐만 아니라 여기에 캐스팅 배치하는 몇 순열. 나는 또한 @rc의 선언을 varchar으로 변경하려고 시도했지만 여전히 같은 오류가 발생합니다. 이 경우

+2

? 그것은 놀라 울 정도로 놀랄만 한 언어를 만들 것입니다. –

+0

이것은 사용해야하는 방법입니다. http://stackoverflow.com/questions/803211/how-to-get-sp-executesql-result-into-a-variable 시도해보고 질문을 게시하십시오. –

+0

죄송합니다. 추가하지 않으 셨습니다. 다음 줄. – mathB

답변

1

사용 sp_executesql을, 당신은 단지 * 변수에 * A * 문자열 *을 할당하는 문자열이 쿼리로 간주하고 *이 * 실행이 발생할 것을 기대

DECLARE @retval int 
    DECLARE @sSQL nvarchar(500); 
    DECLARE @ParmDefinition nvarchar(500); 

    DECLARE @rc   INT 
      ,@str  NVARCHAR(MAX) 
      ,@tbname NVARCHAR(500) = 'Table1' 
      ,@id  int 

    set @str='select @rcOut = count(*) from dbo.[' + @tbname + '] where id = ' + CAST(@id as NVARCHAR) 


    EXEC sp_executesql @str, N'@rcOut int OUTPUT',@rcOut = @rc OUTPUT; 

    SELECT @rc; 
+0

감사합니다. 한 시간 전에 또 다른 대답이있었습니다. 이와 비슷한 것이 었습니다. 나는 그것을 사용할 수있었습니다. 삭제 이유를 모르겠습니다. – mathB

+1

이것은이 시나리오에서 올바른 방법이며 temp를 생성 할 필요가 없습니다. 표. – SHD

관련 문제