>  기사  >  php教程  >  sqlserver 커서 사용 단계 예(커서 생성, 커서 닫기)

sqlserver 커서 사용 단계 예(커서 생성, 커서 닫기)

高洛峰
高洛峰원래의
2016-12-14 11:52:231166검색

커서는 DBMS 서버에 저장된 데이터베이스 쿼리이며 SELECT 문이 아니라 해당 문으로 검색된 결과 집합입니다. 커서가 저장된 후 응용 프로그램은 필요에 따라 커서 내의 데이터를 스크롤하거나 찾아볼 수 있습니다.

커서 사용

커서 사용 단계:

커서를 사용하기 전에 커서를 선언(정의)해야 합니다. 이 프로시저는 실제로 데이터를 검색하지 않고 사용할 SELECT 문과 커서 옵션만 정의합니다.

선언한 후에는 커서를 열어야 사용할 수 있습니다. 이 프로세스에서는 앞에서 정의한 SELECT 문을 사용하여 실제로 데이터를 검색합니다.

데이터로 채워진 커서의 경우 필요에 따라 행을 가져옵니다(검색).

커서 사용을 종료할 때는 반드시 커서를 닫고 가능하면 커서를 해제해야 합니다(특정 DBMS에 따라 다름).

커서를 선언한 후 필요한 만큼 자주 열고 닫을 수 있습니다. 커서가 열려 있는 동안 필요한 만큼 자주 가져오기 작업을 수행할 수 있습니다.

커서 만들기

DECLARE를 사용하여 SQL Server에서 커서 이름을 지정하고 필요에 따라 WHERE 및 기타 절을 사용하여 해당 SELECT 문을 정의합니다.

코드는 다음과 같습니다.

DECLARE CustCursor CURSOR
FOR
SELECT * FROM Customers
WHERE cust_email IS NULL

커서 사용

OPEN CURSOR 문을 사용하여 커서를 열고, FETCH 문을 사용하여 커서 데이터에 액세스합니다. FETCH는 검색할 행, 검색 위치 및 위치(변수 이름)를 나타냅니다. 다음은 SQL Server에서 커서를 사용하는 예입니다.

코드는 다음과 같습니다.

DECLARE @cust_id CHAR(10),
@cust_name CHAR(50),
@cust_address CHAR(50),
@cust_city CHAR(50),
@cust_state CHAR(5),
@cust_zip CHAR(10),
@cust_country CHAR(50),
@cust_contact CHAR(50),
@cust_email CHAR(255)
OPEN CustCursor
FETCH NEXT FROM CustCursor
INTO @cust_id, @cust_name, @cust_address,
@cust_city, @cust_state, @cust_zip,
@cust_country, @cust_contact, @cust_email
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM CustCursor
INTO @cust_id, @cust_name, @cust_address,
@cust_city, @cust_state, @cust_zip,
@cust_country, @cust_contact, @cust_email
...
END
CLOSE CustCursor

이 예에서는 검색된 각 열에 대해 변수가 선언되고 FETCH 문은 행을 검색하여 해당 변수에 값을 저장합니다. WHILE 루프를 사용하여 각 행을 처리합니다. WHILE @@FETCH_STATUS = 0 조건은 더 이상 행을 가져올 수 없을 때 처리를 종료합니다(루프 종료). 이 예제에서는 특정 처리를 수행하지 않습니다. 실제 코드에서는 ... 자리 표시자를 특정 처리 코드로 바꿔야 합니다.

커서 닫기

SQL Server에서 커서 닫기:

코드는 다음과 같습니다.

CLOSE CustCursor
DEALLOCATE CURSOR CustCursor

CLOSE 문을 사용하여 닫습니다. 커서. 커서가 닫히면 다시 열지 않고는 사용할 수 없습니다. 두 번째 사용 시 다시 선언할 필요 없이 OPEN으로 열기만 하면 됩니다.

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