커서가 선언된 후 필요에 따라 커서를 자주 열고 닫을 수 있습니다. 열린 후에는 필요에 따라 페치 작업을 수행할 수 있습니다. 이 작업 영역은 특정 클라이언트전용입니다. 이 암시적 작업 영역을 암시적 커서라고 합니다. 클라이언트는 MySQL이라는 이름으로 암시적 커서에 액세스할 수 있습니다. 이 예제에서는 t라는 다른 변수를 추가했습니다(각 주문에 대한 합계가 저장됩니다). 또한 저장 프로시저는 ordertotals라는 새 테이블을 즉석에서 만듭니다(존재하지 않는 경우). 이 표는 저장 프로시저에서 생성된 결과를 저장합니다. FETCH는 이전과 마찬가지로 각 order_num을 가져온 다음 CALL을 사용하여 다른 저장 프로시저(이전 자습서에서 만든 프로시저)를 실행하여 각 주문에 대한 세금(그 결과는 t에 저장됨)으로 합계를 계산합니다. 그리고 마지막으로 INSERT는 각 주문에 대한 주문 수와 합계를 저장하는 데 사용됩니다. select_statement: 커서와 연결된 쿼리를 선택커서를 명시적으로 닫지 않으면 END 문에 도달하면 MySQL이 자동으로 닫힙니까요.

MySQL 커서로 작업할 때는 커서가 행을 찾을 수 없는 상황을 처리하기 위해 NOT FOUND 처리기를 선언해야 합니다. FETCH 문을 호출할 때마다 커서는 결과 집합에서 다음 행을 읽으려고 시도합니다. 커서가 결과 집합의 끝에 도달하면 데이터를 얻을 수 없으며 조건이 발생합니다. 처리기는 이 조건을 처리하는 데 사용됩니다. 커서를 더 이상 사용하지 않으면 커서를 닫아야 합니다. 현재 승/패 상태를 얻고 줄무늬 번호를 설정한 후 데이터 집합의 나머지 부분을 반복(트래버스)합니다. 각 루프 반복을 통해 커서는 루프를 끊거나 모든 레코드가 소비될 때까지 다음 레코드를 “가리킨다”고 합니다. 위의 예에서 curdemo는 입력 값을 허용하는 입력 매개 변수입니다. cur1은 커서에 사용되는 특성입니다.

open()은 커서를 여는 데 사용되며, 페치가 행 값을 이름으로 가져오는 데 사용되며 커서를 닫면 동일한 분 동안 열린 커서가 제거됩니다. 그런 다음 호출 커서는 curdemo을 실행하고 레코드를 반환합니다 (즉, 호출 커서는 stu_id (2)를 호출하고 이름 (shah)을 반환합니다) 마지막으로 CLOSE 문을 호출하여 커서를 비활성화하고 연결된 메모리를 다음과 같이 해제합니다.