이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 42.2. PL/스포츠 토토 결과 기능 및 인수버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

42.2. PL/토토 핫 기능 및 인수#

에서 함수를 생성하려면pl/토토 핫언어, 표준 사용함수 만들기구문 :

함수 만들기funcName(Argument-Types) 반환return-type$$
    # pl/토토 핫 기능 본문
$$ 언어 pltcl;

pl/토토 핫u언어가로 지정되어야한다는 점을 제외하고는 동일합니다.pl토토 핫u.

함수의 본문은 단순히 토토 핫 스크립트입니다. 함수가 호출되면 인수 값은 토토 핫 스크립트로 전달됩니다.1 ... n. 결과는 A와 함께 일반적인 방식으로 토토 핫 코드에서 반환됩니다.return진술. 절차에서 토토 핫 코드의 반환 값은 무시됩니다.

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

함수 생성 토토 핫_max (정수, 정수)는 정수를 $$로 반환합니다
    if $ 1 $ 2 return $ 1
    $ 2를 반환합니다
$$ 언어 pltcl 엄격한;

조항 참고엄격한, NULL 입력 값에 대해 생각하지 않아도됩니다. NULL 값이 전달되면 함수는 전혀 호출되지 않지만 자동으로 NULL 결과를 반환합니다..

NAMPLEST 기능에서, 인수의 실제 값이 null이면 해당$n변수가 빈 문자열로 설정됩니다. 특정 인수가 null인지 여부를 감지하려면 함수를 사용하십시오ArgisNull. 예를 들어, 우리가 원한다고 가정 해토토 핫_maxnull이 아닌 말이 아닌 인수를 반환하기 위해 하나의 null과 하나의 unnull 인수가 포함되어 있습니다 :

함수 생성 토토 핫_max (정수, 정수)는 정수를 $$로 반환합니다
    [ArgisNull 1] 인 경우
        if [ArgisNull 2] return_null
        $ 2를 반환합니다

    if [ArgisNull 2] return $ 1
    if $ 1 $ 2 return $ 1
    $ 2를 반환합니다
$$ 언어 pltcl;

위와 같이, pl/토토 핫 함수에서 널 값을 반환하려면 executereturn_null. 기능이 엄격한 지 여부에 관계없이 수행 할 수 있습니다.

복합 유형 인수는 TCL 어레이로 기능으로 전달됩니다. 배열의 요소 이름은 복합 유형의 속성 이름입니다. 전달 된 행의 속성에 널 값이 있으면 배열에 나타나지 않습니다. 예는 다음과 같습니다.

테이블 직원 생성 (
    이름 텍스트,
    급여 정수,
    시대 정수
);

기능 초과 지불 (직원)을 작성하여 부울을 $$로 반환합니다
    if 200000.0 <$ 1 (급여) 
        "T"반환

    if $ 1 (Age) <30 && 100000.0 <$ 1 (Salary) 
        "T"반환

    "F"반환
$$ 언어 pl토토 핫;

PL/TCL 기능도 복합 유형 결과를 반환 할 수 있습니다. 이렇게하려면 TCL 코드는 예상 결과 유형과 일치하는 열 이름/값 쌍의 목록을 반환해야합니다. 목록에서 생략 된 열 이름은 널로 반환되며 예기치 않은 열 이름이있는 경우 오류가 발생합니다. 예는 다음과 같습니다.

function square_cube 만들기 (int, out squared int, out cubed int) $$
    반환 [목록 제곱 [expr $ 1 * $ 1] Cubed [expr $ 1 * $ 1 * $ 1]]
$$ 언어 pl토토 핫;

절차의 출력 인수는 예를 들어 같은 방식으로 반환됩니다.

절차 생성 토토 핫_TRIPLE (Inout a Integer, Inout B Integer) $$
    반환 [a list a [expr $ 1 * 3] b [expr $ 2 * 3]]
$$ 언어 pl토토 핫;

토토 핫_TRIPLE (5, 10); 전화하십시오.

결과 목록은 원하는 튜플의 배열 표현에서를 만들 수 있습니다.배열 get토토 핫 명령. 예를 들어:

함수 만들기 Raise_pay (Employee, Delta Int)는 직원을 $$로 반환합니다
    세트 1 (급여) [expr $ 1 (급여) + $ 2]
    반환 [배열 get 1]
$$ 언어 pltcl;

pl/토토 핫 함수는 세트를 반환 할 수 있습니다. 이렇게하려면 TCL 코드가 호출해야합니다return_next줄당 당 1 회 반환, 스칼라 유형을 반환 할 때 적절한 값을 전달하거나 복합 유형을 반환 할 때 열 이름/값 쌍의 목록을 전달합니다. 다음은 스칼라 유형을 반환하는 예입니다.

함수 시퀀스 생성 (int, int)은 int를 $$로 반환합니다
    for set i $ 1 $ i <$ 2 incr i 
        return_next $ i

그리고 여기에 복합 유형을 반환하는 하나가 있습니다 :

함수 생성 table_of_squares (int, int)는 테이블 (x int, x2 int)을 $$로 반환합니다.
    for set i $ 1 $ i <$ 2 incr i 
        return_next [list x $ i x2 [expr $ i * $ i]]