커서 FETCH의 응용 및 인스턴스
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 커서 확장, 다음 규칙이 적용됩니다.
@@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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.