> php教程 > PHP开发 > 본문

SQL Server 커서 처리 루프

高洛峰
풀어 주다: 2016-12-14 11:49:21
원래의
1080명이 탐색했습니다.

3개의 데이터 테스트

CREATE TABLE test_main (
id      INT,
value   VARCHAR(10),
PRIMARY KEY(id)
);
로그인 후 복사

INSERT INTO test_main(id, value) VALUES (1, 'ONE');

INSERT INTO test_main(id, value) ) VALUES (2, 'TWO');

INSERT INTO test_main(id, value) VALUES (3, 'THREE');

간단한 루프 처리

DECLARE

@id INT, @value VARCHAR(10);

BEGIN

-- 커서를 정의합니다.

DECLARE c_test_main CURSOR FAST_FORWARD FOR

SELECT id, value FROM test_main;

-- 커서를 엽니다.

OPEN c_test_main;

--데이터를 채웁니다.

다음 가져오기 FROM c_test_main INTO @ id, @value;

--데이터가 검색되면 처리됩니다.

WHILE @@fetch_status = 0

BEGIN

PRINT @value;

- 다음 데이터를 입력합니다.

FETCH NEXT FROM c_test_main INTO @id, @value;

END;

- 커서 닫기

CLOSE c_test_main;

-- 커서를 놓습니다.

DEALLOCATE c_test_main;

END;

go

ONE

TWO

THREE

업데이트 커서

DECLARE

@id INT, @value VARCHAR (10);

BEGIN

--커서를 정의합니다.

DECLARE c_test_main CURSOR FOR

SELECT id, value FROM test_main

업데이트용;

--커서 열기.

OPEN c_test_main;

--데이터 채우기.

c_test_main INTO @id, @value에서 다음 항목 가져오기 ;

--데이터가 검색되면 처리됩니다.

WHILE @@fetch_status = 0

BEGIN

PRINT @value;

--데이터 업데이트 .

UPDATE

test_main

SET

value = value + '1'

WHERE

CURRENT OF c_test_main;

--다음 데이터를 입력합니다.

FETCH NEXT FROM c_test_main INTO @id, @value;

END;

--커서 닫기

CLOSE c_test_main;

-- 커서를 놓습니다.

DEALLOCATE c_test_main;

END;

go

ONE

(1 행 영향 받음)

TWO

Three

SELECT * FROM test_main;

이동

id          값

------------ ----------

                                                                                                                      🎜> 3 Three1


(3행 영향)


뒤로 스크롤하는 지원되는 커서 앞으로


참고: 테스트 목적으로 test_main 테이블의 데이터가 11개 항목으로 늘어났습니다.

DECLARE

@id INT, @value VARCHAR(10);

BEGIN

​​​​-- 커서를 정의합니다.

DECLARE c_test_main CURSOR SCROLL FOR
SELECT id, value FROM test_main ;

-- 커서를 엽니다.
OPEN c_test_main;

-- 데이터를 채웁니다.

FETCH FIRST FROM c_test_main INTO @id, @value;
PRINT '커서 첫 번째 행:' + @value;

-- 데이터를 채웁니다.
FETCH LAST FROM c_test_main INTO @id, @value;
PRINT '마지막 행 커서에서:' + @value ;

-- 데이터를 채웁니다.
FETCH ABSOLUTE 3 FROM c_test_main INTO @id, @value;
PRINT '커서의 라인 3 [절대 주소] :' + @value;

-- 데이터를 채웁니다.
FETCH RELATIVE -2 FROM c_test_main INTO @id, @value;
PRINT '커서 [상대 주소]의 라인 -2: ' + @value;

-- 데이터를 채웁니다.
FETCH PRIOR FROM c_test_main INTO @id, @value;
PRINT '커서의 이전 행:' + @value;

-- 데이터를 채웁니다.
FETCH NEXT FROM c_test_main INTO @id, @value;
PRINT '커서의 다음 줄:' + @value;

-- 커서 닫기
CLOSE c_test_main;
-- 커서를 놓습니다.

DEALLOCATE c_test_main;

END;
go



요약


SQL-92 구문

DECLARE 커서_이름 [ INSENSITIVE ] [ SCROLL ] CURSOR

FOR select_statement

[ FOR { 읽기 전용 | UPDATE [ OF 열 이름 [ ,...n ] ] } ]


Transact-SQL扩 확장语법

DECLARE 커서 이름 CURSOR

[ 로컬 | 글로벌 ]

[ FORWARD_ONLY | 스크롤 ]

[ 정적 | 키셋 | 다이나믹 | FAST_FORWARD ]

[ 읽기 전용 | 스크롤_잠금 | 낙관적 ]

[ 유형_경고 ]

FOR select_statement

[ FOR UPDATE [ OF 열 이름 [ ,...n ] ] ]


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!