>php教程 >PHP开发 >SQL에서 커서 사용

SQL에서 커서 사용

高洛峰
高洛峰원래의
2016-12-14 11:20:481195검색

일반적으로 SELECT 쿼리 문을 사용할 때는 모두 한 행의 레코드에 대한 것입니다.
쿼리 분석기에서 여러 행의 레코드(예: 레코드 세트)를 읽으려면 커서를 사용해야 합니다. WHILE 루프


커서 유형:
1. 정적 커서(데이터 행의 변경 사항을 감지하지 않음)
2. 동적 커서(모든 데이터 행의 변경 사항을 반영) )
3. 정방향 커서만 지원(스크롤 지원 안됨)
4. 키셋 커서(수정사항 반영은 가능하지만 삽입, 삭제는 정확하게 반영되지 않음)

커서 사용순서 :
1 , 커서 정의
2. 커서 열기
3. 커서 사용
4. 커서 닫기
5. 커서 해제

Transact-SQL:
커서 이름 커서 선언 [LOCAL][FORWARD_ONLY | SCROLL][STATIC | KEYSET | DYNAMIC] [READ_ONLY | SCROLL_LOCKS]
for update[of 열 이름[, 열 이름]]
참고: LOCAL 로컬 커서 GLOBAL 전역 커서
FORWARD_ONLY 앞으로 SCROLL 스크롤
STATIC 정적 KEYSET 키 설정 DYNAMIC 동적
READ_ONLY 읽기 전용 SCROLL_LOCKS 커서의 현재 행 잠금

커서의 데이터 가져오기
FETCH [[NEXT | FIRST | LAST |
ABSOLUTE{ n | @nvar | RELATIVE { n | @nvar}]
From ] 커서 이름 [변수에]
참고:
NEXT 다음 줄 이전 줄 첫 번째 줄
LAST 마지막 라인 ABSOLUTE n 라인 n
RELATIVE n 현재 위치에서 시작하는 라인 n
을 변수에 현재 라인의 필드 값을 변수에 할당

커서 상태 변수:
@@fetch_status 커서 상태
0 성공 -1 실패 -2 손실
@@cursor_rows 커서 결과 집합의 행 수
n 행 수 -1 커서가 동적임 0 빈 집합 커서
커서의 현재 행 작동:
커서 이름의 현재

예 1: 커서를 사용하여 쿼리된 데이터 세트 탐색

pubs 사용

go

@auid char 선언(12),@aulname varchar(20),@aufname varchar(20), @st char(2),@auinfo varchar(50)

auth_cur 커서 선언 for

au_id, au_lname, au_fname, state 선택

저자로부터

auth_cur 열기

auth_cur에서 @auid,@aulname,@aufname으로 다음 항목 가져오기 , @st

while (@@fetch_status=0)

시작

print '저자 번호: '+@auid

print '저자 이름: '+@aulname+ ','+@aufname

print 'State: '+@st

print '------------------- --- -----'

auth_cur에서 @auid,@aulname,@aufname, @st

end

auth_cur 닫기

auth_cur 할당 해제

예 2: 커서를 사용하여 데이터 수정 및 삭제

auth_cur 커서 스크롤 선언

au_id, au_lname, au_fname, 상태 선택

au_lname 업데이트를 위한 작성자의

auth_cur 열기

@rowcount int 선언

set @rowcount = 6

auth_cur에서 절대 @rowcount 가져오기 -- @rowcount 변수 변경 식별된 행은 현재 행으로 설정됩니다

--다음 행은 커서를 사용하여 수정됩니다

update Author set au_lname='Zhang' where current of auth_cur-- 커서의 현재 행 수정

--다음 줄은 커서를 사용하여 삭제 작업을 수행합니다.

현재 auth_cur가 있는 작성자에서 삭제


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.