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

45.2. PL/파이썬 함수

PL/Py스포츠 토토 베트맨on의 기능은 표준을 통해 선언됩니다.함수 생성구문:

함수 생성기능 이름 (인수 목록)
  반품반환 유형AS $$
  # PL/Py스포츠 토토 베트맨on 함수 본문
$$ 언어 plpy스포츠 토토 베트맨onu;

함수의 본문은 단순히 Py스포츠 토토 베트맨on 스크립트입니다. 함수가 호출되면 해당 인수가 목록의 요소로 전달됩니다.인수; 명명된 인수도 Python 스크립트에 일반 변수로 전달됩니다. 일반적으로 명명된 인수를 사용하는 것이 더 읽기 쉽습니다. 결과는 일반적인 방식으로 Python 코드에서 반환됩니다.반환또는수율(결과 집합 문의 경우). 반환 값을 제공하지 않으면 Python은 기본값을 반환합니다.없음. PL/파이썬파이썬의 번역없음SQL null 값으로.

예를 들어 두 정수 중 더 큰 값을 반환하는 함수는 다음과 같이 정의할 수 있습니다.

CREATE FUNCTION pymax (a 정수, b 정수)
  정수를 반환합니다.
AS $$
  a  b인 경우:
    반환하다
  b를 돌려주다
$$ 언어 plpythonu;

함수 정의의 본문으로 제공되는 Python 코드는 Python 함수로 변환됩니다. 예를 들어 위의 결과는 다음과 같습니다.

def __plpython_procedure_pymax_23456():
  a  b인 경우:
    반환하다
  반환 b

23456이 다음에 의해 함수에 할당된 OID라고 가정포스트그레SQL.

인수는 전역 변수로 설정되었습니다. Python의 범위 지정 규칙으로 인해 변수가 블록에서 전역으로 다시 선언되지 않는 한 함수 내에서 인수 변수를 변수 이름 자체와 관련된 표현식의 값으로 재할당할 수 없다는 미묘한 결과가 발생합니다. 예를 들어 다음은 작동하지 않습니다.

CREATE FUNCTION pystrip(x 텍스트)
  텍스트를 반환합니다.
AS $$
  x = x.strip() # 오류
  x를 반환하다
$$ 언어 plpythonu;

다음에 할당하기 때문에x만든다x전체 블록에 대한 지역 변수 및 따라서x할당 오른쪽에 있는 것은 아직 할당되지 않은 지역 변수를 나타냅니다.x, PL/Py스포츠 토토 베트맨on 함수 매개변수가 아닙니다. 를 사용하여글로벌진술, 이것은 작동하도록 만들 수 있습니다:

CREATE FUNCTION pystrip(x 텍스트)
  텍스트를 반환합니다.
AS $$
  글로벌엑스
  x = x.strip() # 이제 알았어
  x를 반환하다
$$ 언어 plpythonu;

그러나 PL/Py스포츠 토토 베트맨on의 구현 세부사항에 의존하지 않는 것이 좋습니다. 함수 매개변수를 읽기 전용으로 처리하는 것이 더 좋습니다.