지원되지 않는 버전 :6.3
이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다current버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.
PostgreSQL
이전 31 장. SQL 확장 : 기능 다음

쿼리 언어 (SQL) 기능

SQL 기본 유형에 대한 스포츠 토토

가장 간단한 가능한 SQL 기능에는 인수가 없으며 간단히 int4 :과 같은 기본 유형을 반환합니다.

스포츠 토토 생성 one () int4를 반환합니다
     '언어'SQL 결과로 'SELECT 1';

    답으로 하나를 선택하십시오.

         +-------+
         | 답변 |
         +-------+
         | 1 |
         +-------+

우리가 스포츠 토토의 대상 목록을 정의했음을 알았습니다 ( 이름 결과), 그러나 쿼리의 대상 목록 스포츠 토토는 스포츠 토토의 대상 목록을 오버로드합니다. 따라서 결과는입니다 하나 대신 라벨링 된 답변.

기본 유형을 취하는 SQL 기능을 정의하기가 거의 쉽습니다. 논쟁으로. 아래의 예에서, 우리가 어떻게 참조하는지 주목하십시오. 기능 내에서 $ 1 및 $ 2로 인수.

스포츠 토토 생성 add_em (int4, int4)은 int4를 반환합니다
     '$ 1 + $ 2를 선택하십시오'; 언어 'SQL';

    답변으로 add_em (1, 2)을 선택하십시오.

         +-------+
         | 답변 |
         +-------+
         | 3 |
         +-------+

SQL 복합 유형의 스포츠 토토

복합 유형의 인수와 함께 스포츠 토토를 지정할 때 (예 : EMP), 우리는 우리가 원하는 주장을 명시해야 할뿐만 아니라 우리는 $ 1과 $ 2로 위를했지만 그 속성도 논쟁. 예를 들어, double_salary 스포츠 토토를 가져 가십시오 두 배가 된 경우 급여가 무엇인지 계산합니다.

스포츠 토토 생성 Double_Salary (EMP)는 int4를 반환합니다
     'SELECT $ 1. SALARY * 2는 급여로;' 언어 'SQL';

    꿈으로 이름, Double_salary (EMP)를 선택하십시오
     emp에서
     여기서 emp.dept = '장난감';

         +-----+-------+
         | 이름 | 꿈 |
         +-----+-------+
         | 샘 | 2400 |
         +-----+-------+

구문의 사용에 주목하십시오. $ 1. Salary. 시작하기 전에 복합 유형을 반환하는 기능의 주제를 먼저 속성을 투영하기위한 스포츠 토토 표기법을 소개합니다. 그만큼 이것을 설명하는 간단한 방법은 일반적으로 표기법을 사용할 수 있다는 것입니다. 속성 (클래스) 및 클래스.

-
    - 이것은 다음과 같습니다.
    - Emp.age <30에서 Emp.name의 이름으로 Emp.Name을 선택하십시오.
    -
    젊은이로 이름 (EMP)을 선택하십시오
     emp에서
     Age (Emp) <30;

         +----------+
         | 젊은이 |
         +----------+
         | 샘 |
         +----------+

우리가 볼 수 있듯이, 이것이 항상 그런 것은 아닙니다. 이것 스포츠 토토 표기법은 단일 인스턴스를 반환합니다. 우리는 전체를 조립함으로써이를 수행합니다 스포츠 토토 내 인스턴스, 속성 별 속성. 이것은입니다 단일 EMP 인스턴스를 반환하는 스포츠 토토의 예 :

기능 작성 new_emp ()는 emp를 반환합니다
     'select \'none \ ':: 텍스트 이름으로 이름으로 텍스트
      급여로 1000,
      25 나이로
      \ 'none \':: char16으로 부서; '
      언어 'sql';

이 경우 각 속성을 일정한 가치이지만 계산이나 표현이 이 상수를 대체합니다. 이와 같이 함수를 정의 할 수 있습니다 까다 롭습니다. 더 중요한 경고 중 일부는 다음과 같습니다.

  • 대상 목록 순서는 정확히 동일해야합니다. 속성이 생성 테이블 문 (또는 a.* query)를 실행할 때.

  • 당신은 표현식을 타임 캐스트해야합니다 (사용 : :) 매우 신중하게 또는 다음 오류가 표시됩니다.

    WARN :: 유형을 반환하도록 선언 한 스포츠 토토 EMP는 검색되지 않습니다 (Emp.*)
  • 인스턴스를 반환하는 함수를 호출 할 때는 전체 인스턴스를 검색합니다. 우리는 an을 투사해야합니다 인스턴스에서 속성 또는 전체 인스턴스를 다음으로 전달합니다. 다른 기능.

    이름 (new_emp ())를 아무도 선택하지 않습니다.
    
                +-------+
                | 아무도 |
                +-------+
                | 없음 |
                +-------+
  • 일반적으로 기능 구문을 사용해야하는 이유 기능의 속성을 돌려주는 것은 Parser는 다른 (DOT) 구문을 이해하지 못합니다 기능 호출과 결합 될 때 투영.

    new_emp ()를 선택하십시오.
                경고 : 파서 : "또는 그 근처의 구문 오류."

SQL 쿼리 언어의 모든 명령 모음은 함께 포장하고 스포츠 토토로 정의됩니다. 명령은 할 수 있습니다 업데이트 (예 : 삽입, 업데이트 및 삭제) 및 선택 쿼리. 그러나 최종 명령은 반환하는 선택 여야합니다. 스포츠 토토의 returnType로 지정된 내용.

스포츠 토토 만들기 clean_emp () int4를 반환합니다
     'emp.salary <= 0에서 emp에서 삭제;
    ridore_this '로 1을 선택하십시오.
     언어 'SQL';

    clean_emp ()를 선택하십시오.

         +-+
         | x |
         +-+
         | 1 |
         +-+

이전 다음
SQL 확장 : 기능 up 프로그래밍 언어 기능