[손에 잡히는 10분 SQL - 벤 포터 지음, 박남혜 옮김] 책의 학습 후 정리자료입니다.
커서
를 사용할 수 있다.SQL 쿼리로 가져온 결과
DECLARE
문을 사용하여 만들 수 있는데, 이 또한 DBMS마다 다르다.DECLARE CusCursor CURSOR
FOR
SELECT * FROM Customers
WHERE cust_email IS NULL;
DECLARE CURSOR CusCursor
IS
SELECT * FROM Customers
WHERE cust_email IS NULL;
OPEN CURSOR CustCursor
FETCH
문을 이용하여 데이터에 접근할 수 있다.DECLARE TYPE CustCursor IS REF CURSOR
RETURN Customers%ROWTYPE;
DECLARE CustRecord Customers%ROWTYPE
BEGIN
OPEN CustCursor;
FETCH CustCursor INTO CustRecord;
CLOSE CustCursor;
END;
DECLARE TYPE CustCursor IS REF CURSOR
RETURN Customers%ROWTYPE;
DECLARE CustRecord Customers%ROWTYPE
BEGIN
OPEN CustCursor;
LOOP
FETCH CustCursor INTO CustRecord;
EXIT WHEN CustCursor%NOTFOUND;
...
END LOOP;
CLOSE CustCursor;
END;
EXIT WHEN CustCursor%NOTFOUND
코드는 더 가져올 행이 없을 때 루프를 빠져나가게 한다.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
WHILE @@FETCH_STATUS = 0
조건을 만족하면(더 가져올 행이 없을 때) 반복문을 빠져나온다.CLOSE CustCursor
CLOSE CustCursor
DEALLOCATE CURSOR CustCursor