2016-10-25 2 views
0

While 루프에서 select 쿼리를 실행하려고하지만 작동하지 않습니다. 중,While 루프에서 저장 프로 시저 Select 문

Set @q_getoldeMail = 'SELECT Lower('[email protected]+') FROM (
      SELECT ROW_NUMBER() OVER (ORDER BY ID) AS rownumber 
       ,ID 
       ,[Name] 
       ,[Description] 
       ,[Status] 
       ,[AssignedTo] 
       ,[AssignedToMail] 
       ,[CC] 
      FROM ' + QUOTENAME(@tablename) + ') AS ar Where rownumber = '[email protected]+'' 

     exec sp_executesql @q_getoldeMail, N'@get_oldeMail nvarchar(100) output', @get_oldeMail output 

그것은 작동하지 않습니다 : 다른 측면에서

Set @i = 1 
    While(@i <= @rowNumber) 

    BEGIN 

     Set @q_getoldeMail = 'SELECT Lower('[email protected]+') FROM (
     SELECT ROW_NUMBER() OVER (ORDER BY ID) AS rownumber 
      ,ID 
      ,[Name] 
      ,[Description] 
      ,[Status] 
      ,[AssignedTo] 
      ,[AssignedToMail] 
      ,[CC] 
     FROM ' + QUOTENAME(@tablename) + ') AS ar Where rownumber = '[email protected]+'' 

    exec sp_executesql @q_getoldeMail, N'@get_oldeMail nvarchar(100) output', @get_oldeMail output 

     Set @i = @i+1 

는이 같은 루프 동안하지 않고 쿼리를 실행했습니다. 내 실수는 무엇입니까? While 루프를 사용하여 문을 Select에서 가져 오는 방법이 있습니까? 너 나 좀 도와 줄 수있어?

편집 :

는이 코드 부분에 값을 설정 @RowCount :

SET @q_getrowNumber = 'SELECT Count(ID) 
FROM dbo.' + quotename(@tablename) + '' 

execute sp_executesql @q_getrowNumber, N'@rownumber int output', @rownumber output 

이 코드 부분에 값 (112)을 반환한다. 그러나 내가 계산을 바꿀 때

Set @rowcount = 2 

그 다음 코드는 작동한다. 나는 @RowCount을 정수로 변환하려고하지만

+5

설명 해주십시오. 어떤 종류의 행동이나 오류 메시지가 나옵니까? –

+4

무엇을 의미합니까 - "작동하지 않습니다". ??? – valex

+0

실수는 While while while while while (i = rowNumber) @ i 값을 늘리려고 할 때 i = i + 1 루프가되어 여전히 i <= rowNumber인지 확인합니다. rownumber 받기 –

답변

0

이 당신이 찾고있는 무엇을 할 수 있음 작동하지 않았다 -. "작동하지 않습니다"

declare @i int = 1 
declare @rownumber int = 2 
declare @result_set table (value varchar(1000)) 
declare @q_getoldeMail nvarchar(max) 
declare @columnname varchar(100) = 'name' 
declare @tablename varchar(100) = 'sys.columns' 
--select * from sys.columns 

Set @i = 1 
While(@i <= @rowNumber) 
BEGIN 
    Set @q_getoldeMail = 'SELECT Lower('[email protected]+') FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY object_ID) AS rownumber 
     ,object_id 
     ,name 
    FROM ' + (@tablename) + ') AS ar Where rownumber = '+convert(varchar,@i)+'' 

    insert into @result_set 
    exec sp_executesql @q_getoldeMail 

    Set @i = @i+1 
end 

select * from @result_set 
+0

테이블에서 rownum을 어떻게 최대치 나 올릴 수 있습니까? –