PostgreSQL | ||
---|---|---|
이전 | 31 장. 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 | +-------+
복합 유형의 인수와 함께 스포츠 토토를 지정할 때 (예 : 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 | 프로그래밍 언어 기능 |