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

42.2. 윈 토토/파이썬 함수

윈 토토/Python의 기능은 표준을 통해 선언됩니다.함수 생성구문:

함수 생성기능 이름 (인수 목록)
  반품반환 유형AS $$
  # 윈 토토/Python 함수 본문
$$ 언어 윈 토토pythonu;

함수의 본문은 단순히 Python 스크립트입니다. 때 함수가 호출되면 해당 인수가 요소로 전달됩니다. 목록인수; 명명된 인수도 Python 스크립트에 일반 변수로 전달됩니다. 명명된 사용 인수는 일반적으로 더 읽기 쉽습니다. 결과는 다음에서 반환됩니다. 일반적인 방식으로 Python 코드를 작성합니다.반환또는수율(경우에 따라 결과 집합 문의 내용). 반환 값을 제공하지 않으면 Python은 기본값을 반환합니다.없음. 윈 토토/파이썬파이썬의 번역없음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, 윈 토토/Python 함수 매개변수가 아닙니다. 를 사용하여글로벌진술, 이것은 다음과 같습니다 작동하도록 만들어졌습니다:

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

그러나 이 구현 세부 사항에 의존하지 않는 것이 좋습니다 윈 토토/파이썬의. 함수 매개변수를 다음과 같이 처리하는 것이 좋습니다. 읽기 전용입니다.