a복합 유형토토복합 유형의 값을 허용합니다
다음은 복합재를 정의하는 두 가지 간단한 예입니다
유형 complex as (
구문은와 비슷합니다.생성, 필드 이름과 유형 만) 현재 포함될 수 있습니다.as키워드가 필수적입니다. 그것 없이는 시스템입니다생성명령이 의미하며 홀수 구문이 나타납니다
유형을 정의한 후, 우리는 그것들을 사용할 수 있습니다.
테이블 생성 on_hand (
또는 기능 :
함수 작성 price_extension (Inventory_item, Integer) 숫자를 반환합니다
테이블을 만들 때마다 복합 유형도
테이블 inventory_item 만들기 (
그런 다음inventory_item위에 표시된 복합 유형은적용하지 마십시오의 값에
문자 그대로 상수로 복합 값을 작성하려면 Enclose
'(val1,val2, ...) '
예는 다음과 같습니다.
'( "퍼지 주사위", 42,1.99)'
|inventory_item위에 정의 된 유형. 만들기 위해
'( "퍼지 주사위", 42,)'
null이 아닌 빈 줄을 원한다면 더블을 쓰십시오.
'( "", 42,)'
여기서 첫 번째 필드는 널 비 빈 문자열, 세 번째 필드입니다.
(이 상수는 실제로 특별한 경우 일뿐입니다.섹션. 상수는 처음에 문자열로 취급됩니다
theRow표현 구문도 할 수 있습니다
행 ( '퍼지 주사위', 42, 1.99)
행 키워드는 실제로 선택 사항입니다.
( '퍼지 주사위', 42, 1.99)
theRowExpression Syntax IS섹션.
복합 열의 필드에 액세스하려면 점이 씁니다.on_hand예제 테이블이 있습니다
item.name.name on_hand where.price 9.99; 이름을 선택하십시오.
이것은 이름 이후로 작동하지 않습니다항목필드가 아닌 테이블 이름으로 간주됩니다.
select (item) .name from on_hand where (item) .price 9.99;
또는 테이블 이름을 사용해야하는 경우 (예 :
select (on_hand.item) .name from on_hand where (on_hand.item) .price 9.99;
이제 괄호 화 된 객체는 올바르게 해석됩니다항목열, 그런 다음
필드를 선택할 때마다 유사한 구문 문제가 적용됩니다
select (my_func (...)). 필드에서 ...
여분의 괄호가 없으면 구문이 유발됩니다
삽입을위한 적절한 구문의 몇 가지 예입니다.
mytab (complex_col) 값 ((1.1,2.2))에 삽입;
첫 번째 예는 생략Row,
복합재의 개별 하위 필드를 업데이트 할 수 있습니다
MyTab Set Complex_Col.r = (Complex_Col) .r + 1 Where ...; 업데이트
여기서 우리가 필요하지 않은 (그리고 실제로는 할 수 없음)SET, 그러나 우리는 언제 괄호가 필요합니다
그리고 우리는 서브 필드를 대상으로 지정할 수 있습니다삽입, 또한 :
mytab에 삽입 (complex_col.r, complex_col.i) 값 (1.1, 2.2);
우리는
복합 값의 외부 텍스트 표현(and)) 전체 값 주위에,) 인접 항목 사이.
'(42)'
필드 유형이 정수 인 경우 공백은 무시됩니다.
이전에 표시된대로 복합 값을 작성할 때필수그렇다면 그렇게하십시오
완전히 빈 필드 값 (그 사이의 문자 없음"".
복합 출력 루틴에는 이중 인용문이 있습니다
참고 :SQL로 쓰는 내용을 기억하십시오텍스트필드
삽입 ... 값 (e '( "\\"\\\ ");String-Literal 프로세서는 한 레벨을 제거합니다( "\"\\ "). ~ 안에텍스트데이터"\.BYTEA예를 들어, 우리는 많은 것만큼 필요할 수 있습니다섹션) 두 배를 피하기 위해 사용할 수 있습니다.
팁 :theRow생성자Row, 개인