선언사용자가 생성할 수 있도록 허용합니다. 한 번에 적은 수의 행을 검색하는 데 사용할 수 있는 커서 더 큰 쿼리로 인해 시간이 초과되었습니다. 커서가 생성된 후 행은 다음을 사용하여 가져왔습니다.토토 : 문서 : 9.3 : Fetch.
참고:이 페이지는 SQL에서의 커서 사용법을 설명합니다. 명령 수준. a 내부에서 커서를 사용하려는 경우PL/pgSQL함수, 규칙은 다음과 같습니다. 다르다 — 참조PostgreSQL : 문서 : 9.3 : 토토 베이.
생성될 커서의 이름입니다.
커서가 텍스트가 아닌 바이너리로 데이터를 반환하도록 합니다. 형식.
커서에서 검색된 데이터가 다음과 같아야 함을 나타냅니다. 커서 아래에 있는 테이블 업데이트의 영향을 받지 않습니다. 커서가 생성된 후에 발생합니다. 에서포스트그레SQL, 이것이 기본 동작입니다. 그래서 이 키워드는 아무런 효과가 없으며 호환성을 위해서만 허용됩니다. SQL 표준을 사용합니다.
스크롤커서가 다음과 같이 될 수 있음을 지정합니다. 비순차적 방식(예: 역방향)으로 행을 검색하는 데 사용됩니다. 쿼리 실행 계획의 복잡성에 따라 지정스크롤부과할 수도 있습니다 쿼리 실행 시간에 대한 성능 저하.스크롤 없음커서를 사용할 수 없음을 지정합니다. 비순차적 방식으로 행을 검색합니다. 기본값은 어떤 경우에는 스크롤을 허용합니다. 이는 지정하는 것과 동일하지 않습니다.스크롤. 참조참고자세한 내용은.
보류 있음커서가 다음을 수행할 수 있음을 지정합니다. 이를 생성한 트랜잭션 이후에도 계속 사용됩니다. 성공적으로 커밋되었습니다.보류 없음무지개 토토를 트랜잭션 외부에서 사용할 수 없음을 지정합니다. 그것이 그것을 만들어냈습니다. 둘 다 아니라면보류 없음아니요보류 있음지정되었습니다.보류 없음기본값입니다.
A PostgreSQL : 문서 : 9.3 : 롤 토토또는값행을 제공하는 명령 무지개 토토에 의해 반환됩니다.
핵심 단어바이너리, 민감함및스크롤할 수 있다 어떤 순서로든 나타납니다.
일반 무지개 토토는 a와 같은 텍스트 형식으로 데이터를 반환합니다.선택생산할 것입니다.바이너리옵션은 커서가 데이터를 바이너리 형식으로 반환합니다. 이렇게 하면 변환 노력이 줄어듭니다. 더 많은 프로그래머 노력의 대가로 서버와 클라이언트 모두 플랫폼에 따른 바이너리 데이터 형식을 처리합니다. 예를 들어, 쿼리가 정수 열에서 1의 값을 반환하는 경우 문자열을 얻습니다.1기본 커서를 사용하면, 반면 바이너리 커서를 사용하면 4바이트 필드를 얻게 됩니다. 값의 내부 표현을 포함합니다(빅 엔디안 형식). 바이트 순서).
바이너리 커서는 주의해서 사용해야 합니다. 많은 응용 프로그램, 포함psql, 준비되지 않았습니다. 바이너리 커서를 처리하고 데이터가 텍스트로 다시 돌아올 것으로 기대합니다. 형식.
참고:클라이언트 응용프로그램이 다음을 사용할 때"확장 쿼리"a를 발행하는 프로토콜가져오기명령, 바인딩 프로토콜 메시지는 다음을 지정합니다. 데이터를 텍스트 형식으로 검색할지 바이너리 형식으로 검색할지 여부. 이 선택은 커서가 정의되는 방식을 재정의합니다. 개념 따라서 확장 쿼리를 사용할 때 이진 커서는 더 이상 사용되지 않습니다. 프로토콜 — 모든 커서는 텍스트 또는 바이너리로 처리될 수 있습니다.
그렇지 않은 경우보류 있음이 지정되었습니다. 이 명령으로 생성된 커서는 현재 커서 내에서만 사용할 수 있습니다. 거래. 따라서,선언없이보류 있음트랜잭션 외부에서는 쓸모가 없습니다. 블록: 무지개 토토는 블록이 완료될 때까지만 유지됩니다. 성명. 그러므로PostgreSQL해당 명령이 트랜잭션 외부에서 사용되는 경우 오류를 보고합니다. 블록. 사용롤 토토 : 문서 : 9.3 : 시작그리고커밋(또는롤백) 거래 정의 차단합니다.
만약보류 있음이 지정되었으며 커서를 생성한 트랜잭션이 성공적으로 커밋되면 커서는 후속 트랜잭션에서 계속 액세스할 수 있습니다. 같은 세션. (그러나 생성된 트랜잭션이 중단되면 커서가 제거됩니다.) 커서는와 함께 보류명시적인 경우 닫힙니다.닫기명령이 실행되거나 세션이 종료됩니다. 현재 구현 시 고정 커서로 표시되는 행이 복사됩니다. 사용할 수 있도록 임시 파일이나 메모리 영역에 저장 후속 거래를 위해.
보류 있음다음 경우에는 지정되지 않을 수 있습니다. 쿼리에는 다음이 포함됩니다.업데이트용또는공유용.
그스크롤옵션을 지정해야 합니다. 뒤로 가져오는 데 사용할 커서를 정의할 때. 이 SQL 표준에서 필요합니다. 그러나 호환성을 위해 이전 버전,PostgreSQL할 것이다 없이 역방향 가져오기를 허용합니다.스크롤, 만약 커서의 쿼리 계획은 추가 오버헤드가 없을 정도로 간단합니다. 그것을 지원하는 데 필요합니다. 그러나 응용 프로그램 개발자는 다음과 같이 조언합니다. 커서에서 역방향 페치 사용에 의존하지 마십시오. 다음을 사용하여 생성되었습니다.스크롤. 만일스크롤 없음이 지정되면 역방향 가져오기가 수행됩니다. 어떤 경우에도 허용되지 않습니다.
쿼리에 포함된 경우 역방향 가져오기도 허용되지 않습니다.업데이트용또는용 공유; 그러므로스크롤그렇지 않을 수도 있습니다 이 경우에는 지정됩니다.
| 주의 |
|
스크롤 가능 및보류 있음무지개 토토가 있을 수 있습니다. 휘발성 함수를 호출하면 예상치 못한 결과가 발생합니다(참조PostgreSQL : 문서 : 9.3 : 토토 사이트 변동성 범주). 언제 이전에 가져온 행을 다시 가져오는 경우 함수는 다음과 같습니다. 다시 실행되어 처음과 다른 결과가 나올 수도 있음 시간. 이러한 경우에 대한 한 가지 해결 방법은 커서를 선언하는 것입니다.보류 있음그리고 트랜잭션을 커밋합니다. 행을 읽기 전에. 이렇게 하면 전체 출력이 강제로 실행됩니다. 임시 저장소에 커서가 구체화되므로 휘발성 함수는 각 행에 대해 정확히 한 번 실행됩니다. |
커서의 쿼리에 다음이 포함된 경우에 대한 업데이트또는공유용, 그런 다음 반환됨 같은 방식으로 행을 처음 가져올 때 행이 잠깁니다. 일반의 경우PostgreSQL : 문서 : 9.3 : 롤 토토다음으로 명령하세요 이러한 옵션. 또한 반환된 행은 가장 많은 것입니다. 최신 버전; 따라서 이러한 옵션은 동등한 기능을 제공합니다. SQL 표준이 말하는 것 중"민감함 커서". (지정민감함함께업데이트용또는공유용오류입니다.)
| 주의 |
|
일반적으로 사용하는 것이 좋습니다.에 대한 업데이트커서를 다음과 함께 사용하려는 경우업데이트 ...현재 위치또는삭제 ...현재 위치. 사용업데이트용다른 세션이 변경하는 것을 방지합니다. 가져온 시간과 가져온 시간 사이의 행 업데이트되었습니다. 없이업데이트용, 후속현재 위치명령에는 없음이 포함됩니다. 무지개 토토가 생성된 이후 행이 변경된 경우 효과가 발생합니다. 사용해야 할 또 다른 이유업데이트용이다 그것 없이는 후속현재 위치 OF무지개 토토 쿼리가 SQL을 충족하지 않으면 실패할 수 있습니다. 표준의 존재 규칙"단순히 업데이트 가능"(특히 커서는 다음을 참조해야 합니다. 하나의 테이블이고 그룹화를 사용하지 않거나주문 으로). 단순히 업데이트할 수 없는 커서가 작동할 수도 있습니다. 플랜 선택 세부 사항에 따라 그렇지 않을 수도 있습니다. 그래서 최악의 경우에는 애플리케이션이 테스트에서는 작동하다가 프로덕션에서는 실패할 수 있습니다. 만일업데이트용이 지정되면 무지개 토토는 업데이트가 보장됩니다. 사용하지 않는 주된 이유업데이트용함께현재 위치필요한 경우 커서가 스크롤 가능하거나 후속 커서에 민감하지 않음 업데이트합니다(즉, 이전 데이터를 계속 표시합니다). 이것이라면 요구사항이 있으므로 위에 표시된 주의사항에 주의하세요. |
SQL 표준은 삽입된 무지개 토토에 대해서만 규정합니다SQL.포스트그레SQL서버가 구현하지 않습니다.열기커서에 대한 명령문; 커서는 선언되면 공개된 것으로 간주됩니다. 그러나ECPG,에 대한 Embedded SQL 전처리기PostgreSQL, 표준 지원 SQL 커서 규칙(다음과 관련된 규칙 포함)선언그리고열기문장.
다음을 쿼리하여 사용 가능한 모든 커서를 볼 수 있습니다.pg_cursors시스템 뷰.