PL/롤 토토의 함수는 표준을 통해 선언됩니다PostgreSQL : 문서 : 8.3 : 무지개 토토 만들기구문 :
기능 생성funcName(Argument-List) 보고return-type$$ # pl/롤 토토 기능 본체 $$ 언어 plythonu;
함수의 본문은 단순히 파이썬 스크립트입니다. 언제 함수라고합니다. 인수는의 요소로 전달됩니다. 정렬args []; 명명 된 인수도 있습니다 롤 토토 스크립트에 일반 변수로 전달되었습니다. 결과는입니다 평범한 방식으로 파이썬 코드에서 반환 됨return또는수율(경우 결과 세트 문의).
예를 들어, 더 큰 정수를 반환하는 함수 다음과 같이 정의 할 수 있습니다.
기능 생성 Pymax (A Integer, B Integer) 정수를 반환합니다 $$로 A B : 반환 a 반환 b $$ 언어 plythonu;
함수의 본문으로 제공되는 파이썬 코드 정의는 파이썬 함수로 변환됩니다. 예를 들어, 위의 결과 :
def __pl롤 토토_procedure_pymax_23456 () : A B : 반환 a 반환 b
23456이 기능에 할당 된 OID라고 가정하면postgresql.
PostgreSQL함수
매개 변수는 글로벌에서 사용할 수 있습니다args목록. 에서Pymax
example,args [0]첫 번째 인수로 전달 된 모든 것을 포함하고args [1]두 번째 인수를 포함합니다
값. 또는 표시된대로 이름이 지정된 매개 변수를 사용할 수 있습니다
위의 예. 명명 된 매개 변수의 사용은 일반적으로 더 많습니다
읽기.
SQL 널 값인 경우is 함수로 전달되면 인수 값이로 나타납니다.없음파이썬에서. 위의 기능 정의는 null 입력에 대한 잘못된 답변을 반환합니다. 우리는 할 수 있습니다 추가하다엄격한함수 정의로 만들다PostgreSQL뭔가를하십시오 더 합리적 : 널 값이 전달되면 함수는 전혀 부름을 받지만 널 결과를 반환 할 것입니다. 자동으로. 또는 NULL 입력을 확인할 수 있습니다 기능 본문 :
기능 생성 Pymax (A Integer, B Integer) 정수를 반환합니다 $$로 (a는 없음) 또는 (b는 없음)이면 : 반환 없음 A B : 반환 a 반환 b $$ 언어 plythonu;
위와 같이, pl/롤 토토에서 sql null 값을 반환하려면 함수, 값을 반환없음. 이것은 할 수 있습니다 함수가 엄격한 지 아닌지를 수행해야합니다.
복합 유형 인수는 롤 토토으로 기능으로 전달됩니다 매핑. 매핑의 요소 이름은 속성입니다 복합 유형의 이름. 전달 된 행에 속성이있는 경우 널 값이 있고 값이 있습니다없음매핑에서. 예는 다음과 같습니다.
테이블 직원 만들기 ( 이름 텍스트, 급여 정수, 시대 정수 ); 기능 초과 지불 (E 직원) 생성 부울을 반환합니다 $$로 E [ "급여"] 200000 : 진실을 반환하십시오 if (e [ "age"] <30) 및 (e [ "Salary"] 100000) : 진실을 반환하십시오 거짓을 반환하십시오 $$ 언어 plythonu;
행이나 복합 유형을 반환하는 방법에는 여러 가지가 있습니다. 파이썬 기능. 다음 예는 다음과 같이 가정합니다.
유형을 만들어 afform 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;
반환 값을 제공하지 않으면 Python은 다음을 반환합니다. 기본없음. pl/롤 토토롤 토토의 번역없음SQL NULL 값으로.
apl/롤 토토함수도 할 수 있습니다 스칼라 또는 복합 유형의 반환 세트. 여러 가지 방법이 있습니다 반환 된 객체가 내부적으로 회전하기 때문에이를 달성하기 위해 반복자로. 다음 예는 복합재가 있다고 가정합니다 유형:
유형 인사말 생성 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/롤 토토"]의 사람을 위해 : 수율 (어떻게, 누가) $$ 언어 plythonu;
경고 |
현재 Python으로 인해버그 #1483133, 일부 디버그 버전 롤 토토 2.4 (옵션으로 구성 및 컴파일-with-pydebug)가 알려져 있습니다 충돌하려면PostgreSQL사용시 서버 정해진 결과를 반환하는 반복자. 방치되지 않았습니다 Fedora 4의 버전에는이 버그가 포함되어 있습니다. 그렇지 않습니다 Python 또는 ON의 생산 버전에서 발생합니다 페도라의 패치 버전 4. |
글로벌 사전SD사용 가능합니다 기능 호출간에 데이터를 저장합니다. 이 변수는 비공개입니다 정적 데이터. 글로벌 사전gdis 세션 내의 모든 롤 토토 기능에 사용할 수있는 공개 데이터. 조심스럽게 사용하십시오.
각 함수는 파이썬에서 자체 실행 환경을 가져옵니다.
통역사, 글로벌 데이터 및 기능 인수myfunc
MyFunc2
. 예외는 데이터입니다
에서GD언급 된대로 사전
위에.