이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.토토 결과 PostgreSQL : 문서 : 17 : 선언버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

선언

DECLARE — 배트맨 토토 정의

시놉시스

선언이름[ 바이너리 ] [ 민감하지 않음 ] [ [ 아니오 ] 스크롤 ]
    배트맨 토토 [  함께 |  없이 ] 보류 ] FOR질의

설명

선언사용자는 더 큰 쿼리에서 한 번에 적은 수의 행을 검색하는 데 사용할 수 있는 커서를 생성할 수 있습니다. 커서가 생성된 후 다음을 사용하여 커서에서 행을 가져옵니다.가져오기.

참고

이 페이지는 SQL 명령 수준에서 커서의 사용법을 설명합니다. a 내부에서 커서를 사용하려는 경우PL/pgSQL함수, 규칙이 다릅니다 — 참조PostgreSQL : 문서 : 11 : 43.7. 윈 토토.

매개변수

이름

생성될 커서의 이름입니다.

바이너리

커서가 텍스트 형식이 아닌 바이너리로 데이터를 반환하도록 합니다.

민감함

배트맨 토토에서 검색된 데이터는 배트맨 토토가 생성된 후 발생하는 배트맨 토토 기반 테이블 업데이트의 영향을 받지 않아야 함을 나타냅니다. 에서PostgreSQL, 이것이 기본 동작입니다. 따라서 이 키워드는 아무런 효과가 없으며 SQL 표준과의 호환성을 위해서만 허용됩니다.

스크롤
스크롤 없음

스크롤커서를 사용하여 비순차적 방식(예: 뒤로)으로 행을 검색할 수 있음을 지정합니다. 쿼리 실행 계획의 복잡성에 따라 다음을 지정합니다.스크롤쿼리 실행 시간에 성능 저하를 초래할 수 있습니다.스크롤 없음커서를 사용하여 비순차적 방식으로 행을 검색할 수 없도록 지정합니다. 기본값은 경우에 따라 스크롤을 허용하는 것입니다. 이는 지정하는 것과 동일하지 않습니다.스크롤. 참조참고자세한 내용은.

보류 있음
보류 없음

보류 있음배트맨 토토를 생성한 트랜잭션이 성공적으로 커밋된 후에도 배트맨 토토를 계속 사용할 수 있음을 지정합니다.보류 없음배트맨 토토를 생성한 트랜잭션 외부에서 배트맨 토토를 사용할 수 없음을 지정합니다. 둘 다 아니라면보류 없음아니요보류 있음지정되었습니다.보류 없음기본값입니다.

질의

A 선택또는배트맨 토토가 반환할 행을 제공하는 명령.

핵심 단어바이너리, 민감함스크롤어떤 순서로도 나타날 수 있습니다.

참고

일반 배트맨 토토는 a와 같은 텍스트 형식으로 데이터를 반환합니다.선택생산할 것입니다.바이너리옵션은 커서가 바이너리 형식으로 데이터를 반환해야 함을 지정합니다. 이는 플랫폼 종속 바이너리 데이터 형식을 처리하기 위해 더 많은 프로그래머 노력을 기울이는 대신 서버와 클라이언트 모두의 변환 노력을 줄여줍니다. 예를 들어, 쿼리가 정수 열에서 1의 값을 반환하는 경우 다음 문자열을 얻게 됩니다.1기본 커서를 사용하는 반면, 바이너리 커서를 사용하면 값의 내부 표현을 포함하는 4바이트 필드를 얻을 수 있습니다(빅 엔디안 바이트 순서).

바이너리 커서는 주의해서 사용해야 합니다. 다음을 포함한 많은 응용프로그램psql, 바이너리 커서를 처리할 준비가 되어 있지 않으며 데이터가 텍스트 형식으로 돌아올 것으로 예상합니다.

참고

클라이언트 응용프로그램이 다음을 사용할 때확장 쿼리a를 발행하는 프로토콜가져오기명령, Bind 프로토콜 메시지는 데이터를 텍스트 형식으로 검색할지 바이너리 형식으로 검색할지 여부를 지정합니다. 이 선택은 커서가 정의되는 방식을 재정의합니다. 따라서 확장 쿼리 프로토콜을 사용할 때 바이너리 커서 개념은 더 이상 사용되지 않습니다. 모든 커서는 텍스트나 바이너리로 처리될 수 있습니다.

그렇지 않은 경우보류 있음이 지정되면 이 명령으로 생성된 커서는 현재 트랜잭션 내에서만 사용할 수 있습니다. 따라서,선언없이보류 있음은 트랜잭션 블록 외부에서는 쓸모가 없습니다. 배트맨 토토는 명령문이 완료될 때까지만 유지됩니다. 그러므로PostgreSQL해당 명령이 트랜잭션 블록 외부에서 사용되면 오류를 보고합니다. 사용시작그리고커밋(또는롤백) 거래 블록을 정의합니다.

만약보류 있음이 지정되고 커서를 생성한 트랜잭션이 성공적으로 커밋되면 동일한 세션의 후속 트랜잭션에서 커서에 계속 액세스할 수 있습니다. (단, 생성된 트랜잭션이 중단되면 커서는 제거됩니다.) 커서는보류 있음명시적인 경우 닫힙니다.닫기명령이 실행되거나 세션이 종료됩니다. 현재 구현에서는 보류 커서로 표시되는 행이 임시 파일이나 메모리 영역에 복사되어 후속 트랜잭션에서 계속 사용할 수 있습니다.

보류 있음쿼리에 포함된 경우 지정되지 않을 수 있습니다.업데이트용또는공유용.

스크롤17735_17914PostgreSQL없이 뒤로 가져오기를 허용합니다스크롤, 커서의 쿼리 계획이 충분히 단순하여 이를 지원하는 데 추가 오버헤드가 필요하지 않은 경우. 그러나 애플리케이션 개발자는 다음을 사용하여 생성되지 않은 커서에서 역방향 가져오기를 사용하지 않는 것이 좋습니다.스크롤. 만일스크롤 없음이 지정되면 어떠한 경우에도 역방향 가져오기가 허용되지 않습니다.

쿼리에 포함된 경우 역방향 가져오기도 허용되지 않습니다.업데이트용또는공유용; 그러므로스크롤이 경우에는 지정되지 않을 수 있습니다.

주의

스크롤 가능한 커서가 일시적인 기능을 호출하는 경우 예상치 못한 결과가 발생할 수 있습니다(참조Postgresql: Tài liệu: 11: 38.7. Các loại biến độ토토 chức nă토토). 이전에 가져온 행을 다시 가져오면 함수가 다시 실행되어 처음과 다른 결과가 나올 수 있습니다. 지정하는 것이 가장 좋습니다.스크롤 없음휘발성 함수와 관련된 쿼리용입니다. 실용적이지 않은 경우 한 가지 해결 방법은 커서를 선언하는 것입니다.길게 누른 채 스크롤그리고 트랜잭션에서 행을 읽기 전에 트랜잭션을 커밋합니다. 이렇게 하면 커서의 전체 출력이 임시 저장소에 구체화되어 휘발성 함수가 각 행에 대해 정확히 한 번씩 실행됩니다.

커서의 쿼리에 다음이 포함된 경우업데이트용또는공유용, 그러면 반환된 행은 일반 행과 같은 방식으로 처음 가져올 때 잠깁니다.선택명령을 이 옵션으로 사용하세요. 또한 반환된 행은 최신 버전이 됩니다. 따라서 이러한 옵션은 SQL 표준에서 호출하는 것과 동일한 기능을 제공합니다.민감한 배트맨 토토. (지정민감함함께업데이트용또는공유용오류입니다.)

주의

일반적으로 사용하는 것이 좋습니다.업데이트용커서를 다음과 함께 사용하려는 경우업데이트...현재 위치또는삭제 ...현재 위치. 사용업데이트용다른 세션이 가져온 시간과 업데이트되는 시간 사이에 행을 변경하는 것을 방지합니다. 없이업데이트용, 후속현재는 어디입니까배트맨 토토가 생성된 이후 행이 변경된 경우 명령은 효과가 없습니다.

사용해야 할 또 다른 이유업데이트용그게 없으면 다음은현재 위치배트맨 토토 쿼리가 SQL 표준의 존재 규칙을 충족하지 않으면 실패할 수 있습니다단순히 업데이트 가능(특히 배트맨 토토는 하나의 테이블만 참조해야 하며 그룹화를 사용해서는 안 됩니다.주문 기준). 간단히 업데이트할 수 없는 커서는 계획 선택 세부 사항에 따라 작동할 수도 있고 작동하지 않을 수도 있습니다. 따라서 최악의 경우 애플리케이션이 테스트에서는 작동하다가 프로덕션에서는 실패할 수 있습니다. 만일업데이트용가 지정되면 배트맨 토토 업데이트가 보장됩니다.

사용하지 않는 주된 이유업데이트용함께현재 위치커서가 스크롤 가능해야 하거나 후속 업데이트에 영향을 받지 않도록 해야 하는 경우입니다(즉, 이전 데이터를 계속 표시함). 이것이 요구사항이라면 위에 표시된 주의사항에 주의하세요.

SQL 표준은 삽입된 배트맨 토토에 대해서만 규정합니다.SQL.포스트그레SQL서버가 구현하지 않음열기커서에 대한 명령문; 커서는 선언될 때 열려 있는 것으로 간주됩니다. 그러나ECPG,에 대한 Embedded SQL 전처리기PostgreSQL, 다음과 관련된 표준 SQL 커서 규칙을 지원합니다.선언그리고열기문장.

다음을 쿼리하여 사용 가능한 모든 커서를 볼 수 있습니다.pg_cursors시스템 뷰.

커서를 선언하려면:

영화에서 선택 *에 대한 liahona 커서 선언;

참조가져오기배트맨 토토 사용에 대한 더 많은 예를 보려면.

호환성

SQL 표준에 따르면 커서가 기본적으로 기본 데이터의 동시 업데이트에 민감한지 여부는 구현에 따라 다릅니다. 에서PostgreSQL, 커서는 기본적으로 둔감하며 다음을 지정하여 민감하게 만들 수 있습니다.업데이트용. 다른 제품은 다르게 작동할 수 있습니다.

SQL 표준은 삽입된 커서만 허용합니다.SQL및 모듈에서.PostgreSQL배트맨 토토를 대화형으로 사용할 수 있도록 허용합니다.

바이너리 커서는 aPostgreSQL확장.

또한 참조

닫기, 가져오기, 이동