2017-01-20 4 views
1

T-SQL을 사용하여 모니터링하기위한 HTML 보고서를 생성하려고합니다.T-SQL (Html ​​보고서 디자인)을 사용하여 각 커서 반복의 출력을 추가하는 방법

저는 개발자/프로그래머가 아니지만 T-SQL을 배우기 시작했습니다. 커서를 사용하여 case 문을 사용하여 결과를 검사하고 유효성을 검사합니다. html 형식으로 출력을 얻으려고하기 때문에 각 커서 반복은 이전에 추가되어야합니다. 나는 아래의 코드와 테스트 목적으로 html 부분을 주석 처리했다.

DECLARE @TableHTML1 VARCHAR(MAX) 
DECLARE @dbname_bhtrs VARCHAR(50) 
DECLARE @bhtrs VARCHAR(50) -- database name 

PRINT @TableHTML1 
SET @TableHTML1 = '' 

PRINT @TableHTML1 
PRINT 'here it should display set value' 

DECLARE db_cursor CURSOR FOR 
    SELECT b.dbname, b.backup_Age_hours 
    FROM #backustatus b 

OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @dbname_bhtrs, @bhtrs 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SELECT 
     @TableHTML1 = '<tr><td><font face="Verdana" size="2">' + 
         ISNULL(@dbname_bhtrs, '') + '</font></td>' + 
         CASE 
         WHEN @bhtrs > 24 
          THEN '</font></td>' +'<td><font face="Verdana" size="2">' +ISNULL(CONVERT(nvarchar(10), @bhtrs), '') +'</font></td></tr>' 
         WHEN @bhtrs < 24 
          THEN '</font></td>' +'<td><font face="Verdana" size="5">' +ISNULL(CONVERT(nvarchar(10), @bhtrs), '') +'</font></td></tr>' 
         END 
        FROM 
         #backustatus b 

    FETCH NEXT FROM db_cursor INTO @dbname_bhtrs,@bhtrs 
END 

CLOSE db_cursor 
DEALLOCATE db_cursor 
+1

무엇이 잘못 현재와 암호? 커서에 샘플 데이터와 예상 결과 –

+0

'@ TableHTML1 + = ...'또는'@ TableHTML1 = @ TableHTML1 + ... '을 추가하십시오. – ZLK

답변

1
  • @TableHTML1 변수는 각 루프에서 리셋된다. 값을 추가해야합니다. 간단한 select 쿼리를 사용하여 작업을 수행 할 수도 있습니다. 당신은 '</font></td>' 값을 복제하는

  • 을 (그것은 당신의 일이 SELECT 쿼리를 달성 할 수있을 때 CURSORS를 사용하는을 권장하지 않습니다)를 두 번

    Declare @TableHTML1 VARCHAR(MAX) 
    
    Print @TableHTML1 
    set @TableHTML1 = '' 
    
    
    SELECT @TableHTML1 = TableHTML1 + 
         '<tr><td><font face="Verdana" size="2">' + 
         ISNULL(dbname, '') + '</font></td>' + 
         case 
          when backup_Age_hours > 24 then '<td><font face="Verdana" size="2">' +ISNULL(CONVERT(nvarchar(10), backup_Age_hours), '') +'</font></td></tr>' 
          when backup_Age_hours < 24 then '<td><font face="Verdana" size="5">' +ISNULL(CONVERT(nvarchar(10), backup_Age_hours), '') +'</font></td></tr>' 
          End 
    FROM #backustatus 
    
    SELECT @TableHTML1 
    
+0

고마워, 많이 .. 그것은 스크립트에서 커서를 제거하고 제안 (선택)와 함께 그것을 시도. – Nathan

+0

@ Nathan이 답변으로 문제가 해결 된 경우 (이 답변을 수락 한 것으로 표시) (http://stackoverflow.com/faq#howtoask). – Hadi