PL/PGSQL은에 대한로드 가능한 절차 언어입니다.Postgres데이터베이스 시스템.
이 패키지는 원래 Jan Wieck에 의해 작성되었습니다. 이것 문서는 부분적으로 Roberto Mello (에 의해 작성되었습니다.<rmello@fslc.usu.edu).
PL/PGSQL의 디자인 목표는로드 가능한 것을 만드는 것이 었습니다. 절차 언어
함수를 생성하고 트리거를 만드는 데 사용될 수 있습니다 절차,
제어 구조 추가SQL언어,
복잡한 계산을 수행 할 수 있습니다.
모든 사용자 정의 유형, 함수를 상속합니다 운영자,
서버에서 신뢰할 수 있도록 정의 할 수 있습니다.
사용하기 쉽습니다.
PL/PGSQL 호출 핸들러는 기능의 소스 텍스트를 구문 분석합니다 처음으로 내부 이진 명령 트리를 생성합니다. 기능이 호출됩니다. 생성 된 바이트 코드는 식별됩니다 함수의 객체 ID에 의한 호출 핸들러. 이것은 보장합니다 드롭/생성 시퀀스로 기능을 변경하면됩니다. 새로운 데이터베이스 연결을 설정하지 않고 효과.
모든 표현 및SQL함수에 사용 된 진술, pl/pgsql 바이트 코드 통역사는를 사용하여 준비된 실행 계획을 만듭니다.SPI관리자SPI_PREPARE ()andSPI_SAVEPLAN ()함수. 이것은 이루어집니다 개별 진술이 처음으로 처리됩니다 PL/PGSQL 기능. 따라서 조건부 코드가있는 함수 실행 계획이 될 많은 진술이 포함되어 있습니다 필수, 그 계획 만 준비하고 저장합니다. 데이터베이스 연결 수명 동안 실제로 사용됩니다.
이것은 당신이 당신의 사용자 정의 기능. 예를 들어:
함수 create populate () 정수를 반환합니다. 선언하다 - 선언 시작하다 my_function ()을 수행하십시오. 끝; '언어'윈 토토pgsql ';위의 함수를 작성하면 OID를 참조합니다. 을 위한my_function ()바이트 코드에서. 나중에, 떨어 뜨리고 다시 만들면my_function (), 그 다음에populate ()찾을 수 없습니다my_function ()더 이상. 당신은 그때 재창조해야populate ().
윈 토토/pgsql은 이러한 방식으로 실행 계획을 저장하기 때문에 쿼리 윈 토토/pgsql 함수에 직접 나타나는 것은 모든 실행에 대한 동일한 테이블과 필드; 즉, 당신은 할 수 없습니다 매개 변수를 쿼리의 테이블 또는 필드의 이름으로 사용하십시오. 에게 이 제한 사항을 해결하면 동적 쿼리를 구성 할 수 있습니다 윈 토토/pgsql execute 명세서 사용 --- 모든 실행에 대한 새 쿼리 계획 구성.
입력/출력 변환 및 계산 기능을 제외하고 사용자 정의 유형의 경우 C에서 정의 할 수있는 모든 것 언어 기능은 PL/PGSQL로 수행 할 수도 있습니다. 그것은 복잡한 조건부 계산 기능을 만들 수 있습니다 그리고 나중에 그것들을 사용하여 연산자를 정의하거나 기능 지수.
더 나은 성능 (섹션 24.1.1.1)
SQL 지원 (참조섹션 24.1.1.2)
이식성 (참조섹션 24.1.1.3)
SQL는 언어입니다 PostgreSQL (및 대부분의 다른 관계형 데이터베이스)은 AS를 사용합니다 쿼리 언어. 휴대하기 쉽고 배우기 쉽습니다. 하지만 모든SQL명령문을 실행해야합니다 데이터베이스 서버에 의해 개별적으로.
이는 고객 신청서가 각각을 보내야 함을 의미합니다 데이터베이스 서버를 쿼리하고 처리를 기다리십시오. 결과를 받고 계산을 수행 한 다음 다른 사람을 보내십시오 서버에 대한 쿼리. 이 모든 것이 인터 프로세스를 발생시킵니다 커뮤니케이션 및 귀하의 경우 네트워크 오버 헤드가 발생할 수 있습니다 클라이언트는 데이터베이스와 다른 컴퓨터에 있습니다 섬기는 사람.
PL/PGSQL을 사용하면 계산 블록을 그룹화 할 수 있습니다. 일련의 쿼리내부데이터베이스 서버이므로 절차의 힘이 있습니다 언어와 SQL 사용의 용이성이지만 많은 전체 클라이언트/서버가 없기 때문에 시간 의사 소통 오버 헤드. 귀하의 응용 프로그램은 a PL/PGSQL을 사용하여 상당한 성능이 증가합니다.
pl/pgsql 절차 적 언어의 힘을 추가합니다. 유연성과 용이성SQL. PL/PGSQL을 사용하면 모든 데이터 유형, 열, SQL의 운영자 및 기능
pl/pgsql 함수는 postgresql 내에서 실행되기 때문에 이것들 기능은 PostgreSQL이 실행되는 모든 플랫폼에서 실행됩니다. 따라서 코드를 재사용하고 개발이 적을 수 있습니다 소송 비용.
PL/PGSQL에서 개발하는 것은 매우 간단합니다. 특히 다른 데이터베이스 절차에서 개발 한 경우 Oracle 's PL/SQL과 같은 언어. 두 가지 좋은 방법 PL/PGSQL에서 개발하는 것은 다음과 같습니다.
텍스트 편집기를 사용하고 파일을 다시로드PSQL
PostgreSQL의 GUI 도구 사용 : pgaccess
윈 토토/pgsql에서 개발하는 좋은 방법 중 하나는 간단히 사용하는 것입니다. 당신의 선택에 대한 텍스트 편집기 당신의 기능을 만들고 다른 콘솔, 사용PSQL(PostgreSQL의 대화식 모니터)를로드하려면 해당 함수를로드합니다. 당신이 이런 식으로하고 있다면 (그리고 당신이 PL/PGSQL 인 경우 초보자 또는 디버깅 단계), 항상 좋은 생각입니다드롭생성하기 전에 기능. 그렇게하면 파일을 다시로드 할 때 기능이 중단됩니다. 그런 다음 다시 창조하십시오. 예를 들어:
드롭 함수 testfunc (정수); 기능 testfunc (정수) return integer as ' .... .... 끝; '언어'plpgsql ';
파일을 처음로드하면PostgreSQL경고를 제기합니다 이 기능은 존재하지 않으며 계속 만들어냅니다. 로드하려면 "dbname"이라는 데이터베이스에 SQL 파일 (filename.sql)을 명령 사용 :
psql -f filename.sql dbname
PL/PGSQL에서 개발하는 또 다른 좋은 방법PostgreSQL의 GUI 도구 : pgaccess. 탈출하는 것처럼 당신을 위해 좋은 일을합니다 단일 크기의 재생성 및 디버그를 쉽게 만들 수 있습니다 기능.