커서 FETCH의 응용 및 인스턴스

8107 단어

FETCH


Transact-SQL 서버 커서에서 특정 행을 읽어들입니다.
문법
FETCH         [ [ NEXT | PRIOR | FIRST | LAST                 | ABSOLUTE { n | @nvar }                 | RELATIVE { n | @nvar }             ]              FROM         ] { { [ GLOBAL ] cursor_name } | @cursor_variable_name } [ INTO @variable_name [ ,...n ] ]
매개 변수
NEXT
현재 줄 뒤에 있는 결과 줄을 되돌려주고 현재 줄은 결과 줄로 증가합니다.FETCH NEXT가 커서에 대한 첫 번째 추출 작업인 경우 결과 세트의 첫 번째 행을 반환합니다.NEXT는 기본 커서 추출 옵션입니다.
PRIOR
현재 줄 앞에 있는 결과 줄을 되돌려주고 현재 줄은 결과 줄로 점차 줄어듭니다.FETCH PRIOR가 커서에 대한 첫 번째 추출 작업인 경우 행이 반환되지 않고 커서가 첫 줄 앞에 놓입니다.
FIRST
커서의 첫 번째 줄을 되돌려주고 현재 줄로 사용합니다.
LAST
커서의 마지막 줄을 되돌려 현재 줄로 사용합니다.
ABSOLUTE {n | @nvar}
만약 n 또는 @nvar가 정수라면, 커서 헤더에서 시작된 n 줄을 되돌려주고, 되돌아오는 줄을 새로운 현재 줄로 바꿉니다.만약 n 또는 @nvar가 마이너스라면, 커서 끝에 있는 n 줄을 되돌려주고, 되돌아오는 줄을 새로운 현재 줄로 바꿉니다.n 또는 @nvar가 0이면 행이 반환되지 않습니다.n은 정형 상수이고 @nvar는 smallint,tinyint 또는 int이어야 합니다.
RELATIVE {n | @nvar}
만약 n 또는 @nvar가 정수라면, 현재 줄 이후의 n 줄을 되돌려주고, 되돌아오는 줄을 새로운 현재 줄로 바꿉니다.n 또는 @nvar가 음수이면 현재 줄 이전의 n 줄을 되돌려주고 되돌아오는 줄을 새 현재 줄로 만듭니다.n 또는 @nvar가 0이면 현재 줄로 돌아갑니다.커서를 처음 추출할 때 FETCH RELATIVE의 n 또는 @nvar를 음수 또는 0으로 지정하면 행이 반환되지 않습니다.n은 정형 상수이고 @nvar는 smallint,tinyint 또는 int이어야 합니다.
GLOBAL
cursor_ 지정name은 전역 커서를 가리킨다.
cursor_name
에서 추출할 오픈 커서의 이름입니다.하면, 만약, 만약...name 은 GLOBAL로 지정되면 cursor_name은 전역 커서에 대응하고, GLOBAL을 지정하지 않으면 국부 커서에 대응합니다.
@cursor_variable_name
커서 변수 이름, 추출 작업을 위한 열린 커서를 인용합니다.
INTO @variable_name[,...n]
추출 작업의 열 데이터를 국부 변수에 넣을 수 있습니다.목록의 각 변수는 왼쪽에서 오른쪽으로 커서 결과에 집중된 상응하는 열과 연결됩니다.각 변수의 데이터 형식은 상응하는 결과 열의 데이터 형식과 일치하거나 결과 열의 데이터 형식이 지원하는 숨은 변환이어야 한다.변수의 수는 커서 선택 목록의 열의 수와 일치해야 합니다.
메모
SCROLL 옵션이 SQL-92 스타일의 DECLARE CURSOR 문장에 지정되지 않은 경우 NEXT는 유일하게 지원되는 FETCH 옵션입니다.SQL-92 스타일의 DECLARE CURSOR 문장에 SCROLL 옵션이 지정된 경우 모든 FETCH 옵션이 지원됩니다.
Transact_를 사용하는 경우SQL DECLARE 커서 확장, 다음 규칙이 적용됩니다.
  • FORWARD-ONLY 또는 FAST_가 지정된 경우FORWARD, NEXT는 유일하게 지원되는 FETCH 옵션입니다..
  • DYNAMIC, FORWARD-ONLY 또는 FAST_가 지정되지 않은 경우FORWARD 옵션과 KEYSET, STATIC 또는 SCROLL 중 하나를 지정하면 모든 FETCH 옵션이 지원됩니다
  • DYNAMIC SCROLL은 ABSOLUTE를 제외한 모든 FETCH 옵션을 지원합니다..

  • @@FETCH_STATUS 함수는 이전 FETCH 문장의 상태를 보고합니다.동일한 정보는 sp_에 의해 기록됨describe_cursor가 되돌아오는 커서의fetch_status 열에 있습니다.이 상태 정보는 FETCH 문장에서 반환된 데이터에 대해 어떤 조작을 하기 전에 이 데이터의 유효성을 확인하는 데 사용해야 한다.자세한 내용은 @@FETCH_ 를 참조하십시오.STATUS.
    권한
    FETCH의 기본 권한은 합법적인 사용자입니다.
    예제
    A. 간단한 커서에서 FETCH 사용
    다음 예는 authors 표의 성은 알파벳 B로 시작하는 줄에 간단한 커서를 표시하고 FETCH NEXT를 사용하여 줄을 하나씩 추출합니다.FETCH 문은 DECLARE CURSOR에서 지정한 열의 값을 단일 결과 세트로 반환합니다.
    USE pubs
    GO
    DECLARE authors_cursor CURSOR FOR
    SELECT au_lname FROM authors
    WHERE au_lname LIKE "B%"
    ORDER BY au_lname
    
    OPEN authors_cursor
    
    -- Perform the first fetch.
    FETCH NEXT FROM authors_cursor
    
    -- Check @@FETCH_STATUS to see if there are any more rows to fetch.
    WHILE @@FETCH_STATUS = 0
    BEGIN
        -- This is executed as long as the previous fetch succeeds.
        FETCH NEXT FROM authors_cursor
    END
    
    CLOSE authors_cursor
    DEALLOCATE authors_cursor
    GO
    
    au_lname                                  
    ---------------------------------------- 
    Bennet                                    
    au_lname                                  
    ---------------------------------------- 
    Blotchet-Halls                            
    au_lname                                  
    ----------------------------------------
    

    B. FETCH를 사용하여 변수에 값 저장
    다음 예는 이전 예와 비슷하지만 FETCH 문장의 출력은 클라이언트에게 직접 돌아가는 것이 아니라 국부 변수에 저장됩니다.PRINT 문은 변수를 단일 문자열로 조합하여 클라이언트로 반환합니다.
    USE pubs
    GO
    
    -- Declare the variables to store the values returned by FETCH.
    DECLARE @au_lname varchar(40), @au_fname varchar(20)
    
    DECLARE authors_cursor CURSOR FOR
    SELECT au_lname, au_fname FROM authors
    WHERE au_lname LIKE "B%"
    ORDER BY au_lname, au_fname
    
    OPEN authors_cursor
    
    -- Perform the first fetch and store the values in variables.
    -- Note: The variables are in the same order as the columns
    -- in the SELECT statement. 
    
    FETCH NEXT FROM authors_cursor
    INTO @au_lname, @au_fname
    
    -- Check @@FETCH_STATUS to see if there are any more rows to fetch.
    WHILE @@FETCH_STATUS = 0
    BEGIN
    
        -- Concatenate and display the current values in the variables.
        PRINT "Author: " + @au_fname + " " +   @au_lname
    
        -- This is executed as long as the previous fetch succeeds.
        FETCH NEXT FROM authors_cursor
        INTO @au_lname, @au_fname
    END
    
    CLOSE authors_cursor
    DEALLOCATE authors_cursor
    GO
    
    Author: Abraham Bennet
    Author: Reginald Blotchet-Halls
    

    C. SCROLL 커서 선언 및 기타 FETCH 옵션 사용
    다음 예제에서는 LAST, PRIOR, RELATIVE 및 ABSOLUTE 옵션을 통해 모든 스크롤 기능을 지원하도록 SCROLL 커서를 생성합니다.
    USE pubs
    GO
    
    -- Execute the SELECT statement alone to show the 
    -- full result set that is used by the cursor.
    SELECT au_lname, au_fname FROM authors
    ORDER BY au_lname, au_fname
    
    -- Declare the cursor.
    DECLARE authors_cursor SCROLL CURSOR FOR
    SELECT au_lname, au_fname FROM authors
    ORDER BY au_lname, au_fname
    
    OPEN authors_cursor
    
    -- Fetch the last row in the cursor.
    FETCH LAST FROM authors_cursor
    
    -- Fetch the row immediately prior to the current row in the cursor.
    FETCH PRIOR FROM authors_cursor
    
    -- Fetch the second row in the cursor.
    FETCH ABSOLUTE 2 FROM authors_cursor
    
    -- Fetch the row that is three rows after the current row.
    FETCH RELATIVE 3 FROM authors_cursor
    
    -- Fetch the row that is two rows prior to the current row.
    FETCH RELATIVE -2 FROM authors_cursor
    
    CLOSE authors_cursor
    DEALLOCATE authors_cursor
    GO
    
    au_lname                                  au_fname              
    ---------------------------------------- -------------------- 
    Bennet                                    Abraham               
    Blotchet-Halls                            Reginald              
    Carson                                    Cheryl                
    DeFrance                                  Michel                
    del Castillo                              Innes                 
    Dull                                      Ann                   
    Green                                     Marjorie              
    Greene                                    Morningstar           
    Gringlesby                                Burt                  
    Hunter                                    Sheryl                
    Karsen                                    Livia                 
    Locksley                                  Charlene              
    MacFeather                                Stearns               
    McBadden                                  Heather               
    O'Leary                                   Michael               
    Panteley                                  Sylvia                
    Ringer                                    Albert                
    Ringer                                    Anne                  
    Smith                                     Meander               
    Straight                                  Dean                  
    Stringer                                  Dirk                  
    White                                     Johnson               
    Yokomoto                                  Akiko                 
    
    au_lname                                  au_fname              
    ---------------------------------------- -------------------- 
    Yokomoto                                  Akiko                 
    au_lname                                  au_fname              
    ---------------------------------------- -------------------- 
    White                                     Johnson               
    au_lname                                  au_fname              
    ---------------------------------------- -------------------- 
    Blotchet-Halls                            Reginald              
    au_lname                                  au_fname              
    ---------------------------------------- -------------------- 
    del Castillo                              Innes                 
    au_lname                                  au_fname              
    ---------------------------------------- -------------------- 
    Carson                                    Cheryl
    

    좋은 웹페이지 즐겨찾기