사설 토토 9.2.24 문서 | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.2 : PL/윈 토토 함수 | up | 42 장. PL/Python -Python Prossural Language | PostgreSQL : 문서 : 9.2 : 토토 사이트 순위 공유 |
일반적으로 pl/python의 목표는 a를 제공하는 것입니다."자연"사설 토토 및 Python Worlds. 이것은 데이터 매핑을 알려줍니다 아래에 설명 된 규칙.
함수 인수는 사설 토토 유형에서 변환됩니다 해당 파이썬 유형 :
사설 토토부울파이썬bool.
사설 토토smallintandintPython으로 변환int. 사설 토토bigintis 로 변환LongPython 2에서intPython 3에서
사설 토토Real, 더블및숫자are Python으로 변환float. 주목하십시오숫자이것은 잃어버린다 정보는 잘못된 결과로 이어질 수 있습니다. 이것은 할 수 있습니다 향후 릴리스에 고정되어 있습니다.
사설 토토BYTEA파이썬strPython 2에서바이트Python 3에서. Python 2에서 문자열은 아무 것도없이 바이트 시퀀스로 취급되어야합니다. 캐릭터 인코딩.
사설 토토 문자를 포함한 다른 모든 데이터 유형 문자열 유형은 파이썬으로 변환됩니다str. Python 2에서는이 문자열이 있습니다 Postgresql 서버 인코딩; Python 3에서는 a 모든 문자열과 같은 유니 코드 문자열.
Nonscalar 데이터 유형은 아래를 참조하십시오.
함수 리턴 값이 선언 된 것으로 변환됩니다 사설 토토 다음과 같이 데이터 유형을 반환합니다.
사설 토토 반환 유형이있을 때부울, 반환 값이 평가됩니다 진실에 따른Python규칙. 즉, 0과 빈 문자열은 거짓이지만 특히'f'사실입니다.
사설 토토 반환 유형이BYTEA, 리턴 값이 a로 변환됩니다 각각을 사용하여 문자열 (Python 2) 또는 바이트 (Python 3) 파이썬 내장, 결과가 변환BYTEA.
다른 모든 사설 토토 리턴 유형의 경우 반환 파이썬 값은 파이썬을 사용하여 문자열로 변환됩니다. 내장str사설 토토 데이터의 입력 함수로 전달되었습니다 유형.
Python 2의 문자열은 Postgresql에 있어야합니다. 서버 인코딩 사설 토토로 전달 될 때. 문자열 현재 서버 인코딩에서 유효하지 않은 오류를 제기하지만 모든 인코딩 불일치가 될 수있는 것은 아닙니다. 감지되므로 쓰레기 데이터는 그렇지 않을 때 여전히 발생할 수 있습니다. 올바르게 완료되었습니다. 유니 코드 스트링은 자동으로 인코딩을 올바르게하므로 더 안전하고 사용하기 편리합니다. 파이썬 3에서는 모든 문자열이 있습니다 유니 코드 문자열.
Nonscalar 데이터 유형은 아래를 참조하십시오.
선언 된 사설 토토 사이의 논리적 불일치 리턴 유형 및 실제 반환의 파이썬 데이터 유형 객체는 신고되지 않습니다. 값은 어느 곳에서나 변환됩니다 사례.
SQL NULL 값이 함수로 전달되면 인수
값은로 나타납니다.없음파이썬에서.
예를 들어,의 함수 정의Pymax
표시섹션 42.2잘못 반환합니다
널 입력에 대한 답변. 우리는 추가 할 수 있습니다엄격한사설 토토더 많은 일을하십시오
합리적 : 널 값이 전달되면 함수는
전혀 전화를 걸었지만 널 결과를 반환합니다.
자동으로. 또는 NULL 입력을 확인할 수 있습니다
기능 본문 :
기능 생성 Pymax (A Integer, B Integer) 정수를 반환합니다 $$로 (a는 없음) 또는 (b는 없음)이면 : 반환 없음 A B : 반환 a 반환 b $$ 언어 plythonu;
위와 같이, pl/python에서 sql null 값을 반환하려면 함수, 값을 반환없음. 이것 함수가 엄격한 지 여부에 관계없이 수행 할 수 있습니다.
SQL 어레이 값은 Python 목록으로 PL/Python으로 전달됩니다. PL/Python 함수에서 SQL 배열 값을 반환하려면 예를 들어 목록 또는 튜플과 같은 파이썬 시퀀스를 반환하십시오.
함수 만들기 return_arr () int []를 반환합니다. $$로 반환 (1, 2, 3, 4, 5) $$ 언어 plpythonu; return_arr ()를 선택하십시오. return_arr ------------- 1,2,3,4,5
파이썬에서 문자열은 시퀀스이며 파이썬에 익숙 할 수있는 바람직하지 않은 효과 프로그래머 :
함수 생성 return_str_arr () varchar []를 반환합니다. $$로 "안녕하세요"반환 $$ 언어 plpythonu; return_str_arr ()를 선택하십시오. return_str_arr --------------- 안녕하세요
복합 유형 인수는 다음과 같은 함수로 전달됩니다 파이썬 매핑. 매핑의 요소 이름은 합성 유형의 속성 이름. 속성 인 경우 전달 된 행은 널 값을 가지고 있으며 값이 있습니다없음매핑에서. 예는 다음과 같습니다.
테이블 직원 만들기 ( 이름 텍스트, 급여 정수, 시대 정수 ); 기능 초과 지불 (E 직원) 생성 부울을 반환합니다 $$로 E [ "급여"] 200000 : 진실을 반환하십시오 if (e [ "age"] <30) 및 (e [ "Salary"] 100000) : 진실을 반환하십시오 거짓을 반환하십시오 $$ 언어 plythonu;
행 또는 복합 유형을 반환하는 방법에는 여러 가지가 있습니다. 파이썬 기능에서. 다음 예는 우리를 가정합니다 가지다:
type name_value as ( 이름 텍스트, 가치 정수 );
복합 결과는 a :로 반환 할 수 있습니다.
반환 된 시퀀스 객체는 동일한 수의 것을 가져야합니다 복합 결과 유형으로서의 항목에는 필드가 있습니다. 항목 인덱스 0이있는 첫 번째 필드에 할당됩니다. 복합 유형, 1 ~ 두 번째 등. 을 위한 예:
함수 만들기 make_pair (이름 텍스트, 값 정수) 이름을 name_value를 반환합니다 $$로 반환 [이름, 값] # 또는 대안 적으로 튜플 : return (이름, 값) $$ 언어 plythonu;
모든 열에 대한 SQL NULL을 반환하려면 삽입없음해당 위치에서.
각 결과 유형 열의 값이 검색됩니다 열 이름으로 매핑에서 키로. 예:
함수 만들기 make_pair (이름 텍스트, 값 정수) 이름을 name_value를 반환합니다 $$로 return "name": name, "value": value
추가 사전 키/값 쌍은 무시됩니다. 누락 된 키는 오류로 취급됩니다. SQL NULL을 반환합니다 모든 열의 값, 삽입없음해당 열 이름을 키로 사용합니다.
이것은 매핑과 동일하게 작동합니다. 예:
함수 만들기 make_pair (이름 텍스트, 값 정수) 이름을 name_value를 반환합니다 $$로 Class Named_value : def __init__ (self, n, v) : self.name = n self.value = v RETURN NAMED_VALUE (이름, 값) # 또는 간단히 클래스 NV : 패스 nv.name = 이름 nv.value = value 반환 nv $$ 언어 plythonu;
함수out매개 변수입니다 또한 지원됩니다. 예를 들어:
함수 만들기 multiout_simple (out I Integer, out J Integer) $$ 반환 (1, 2) $$ 언어 plpythonu; multiout_simple ()에서 *를 선택하십시오.
apl/python함수는 할 수 있습니다 또한 스칼라 또는 복합 유형 세트를 반환합니다. 거기 있습니다 반환 된 객체가 내부적으로 반복자로 변했습니다. 다음 예제 복합 유형이 있다고 가정합니다 :
유형 인사말 생성 AS ( 텍스트, 누가 문자 );
세트 결과는 a :에서 반환 할 수 있습니다.
기능 생성 인사말 (텍스트 방법) 정해진 인사말을 반환합니다 $$로 # 복합 유형으로 목록을 포함하는 튜플 리턴 # 다른 모든 조합도 작동합니다 return ([How, "World"], [How, "Postgresql"], [How, "Pl/Python"])))) $$ 언어 plythonu;
기능 생성 인사말 (텍스트 방법) 정해진 인사말을 반환합니다 $$로 클래스 프로듀서 : def __init__ (자기, 방법, 누가) : self.how = 방법 self.ho = 누가 self.ndx = -1 def __iter__ (self) : 자아를 반환하십시오 def next (self) : self.ndx += 1 if self.ndx == len (self.who) : 중지를 높이십시오 return (self.how, self.who [self.ndx]) 리턴 프로듀서 (How, [ "World", "Postgresql", "Pl/Python"])))) $$ 언어 plythonu;
기능 생성 인사말 (텍스트 방법) 정해진 인사말을 반환합니다 $$로 [ "World", "Postgresql", "pl/python"]의 사람을 위해 : 수율 (어떻게, 누가) $$ 언어 plythonu;
경고 |
Python으로 인해버그 #1483133, 일부 디버그 버전 Python 2.4 (옵션으로 구성 및 컴파일-with-pydebug)는 충돌로 알려진사설 토토사용시 서버 정해진 결과를 반환하는 반복자. 방치되지 않았습니다 Fedora 4의 버전에는이 버그가 포함되어 있습니다. 그렇습니다 Python 또는 ON의 생산 버전에서는 발생하지 않습니다 페도라의 패치 버전 4. |
|out매개 변수 (사용setof를 반환합니다 기록)도 지원됩니다. 예를 들어:
함수 만들기 multiout_simple_setof (n Integer, Out Integer, Out Integer)는 record를 $$로 반환합니다. 반환 [(1, 2)] * n $$ 언어 plpythonu; multiout_simple_setof (3);에서 *를 선택하십시오.