토토 핫 만들기 - 새 절차 정의
생성 [또는 교체] 프로 시저이름
([[argmode
] [argname
]Argtype
[기본값 | =default_expr
] [, ...]])) 언어lang_name
| type 변환type_name
[, ...] | [외부] 보안 개요 | [외부] 보안 정의기 | 세트configuration_parameter
tovalue
| =value
| 현재 | 처럼 '정의
' | 처럼 'OBJ_FILE
','link_symbol
' |sql_body
...
프로 시저 생성
새 절차를 정의합니다.프로 시저 생성 또는 교체
새 절차를 만들거나 기존 정의를 대체합니다. 절차를 정의하려면 사용자는가 있어야합니다.usage
언어에 대한 특권.
스키마 이름이 포함 된 경우 지정된 스키마에서 프로 시저가 생성됩니다. 그렇지 않으면 현재 스키마에서 생성됩니다. 새 절차의 이름은 기존 절차 나 함수와 동일한 스키마에서 동일한 입력 인수 유형과 일치하지 않아야합니다. 그러나 다른 인수 유형의 절차와 기능은 이름을 공유 할 수 있습니다 (이것은입니다.과부하).
기존 절차의 현재 정의를 대체하려면 사용프로 시저 생성 또는 교체
. 이런 식으로 절차의 이름 또는 인수 유형을 변경할 수 없습니다 (시도한 경우 실제로 새롭고 별개의 절차를 만들 것입니다).
when프로 시저 생성 또는 교체
기존 절차를 대체하는 데 사용되며 절차의 소유권과 권한은 변경되지 않습니다. 다른 모든 절차 속성에는 명령에 지정된 값이 할당됩니다. 이를 대체 할 절차를 소유해야합니다 (여기에는 소유 역할의 구성원이 포함됩니다).
토토 핫를 생성하는 사용자는 토토 핫의 소유자가됩니다.
토토 핫를 만들 수 있으려면usage
인수 유형에 대한 특권.
참조PostgreSQL : 문서 : 17 : 36.4. 사용자 정의 메이저 토토 사이트쓰기 토토 핫에 대한 자세한 내용은
이름
생성 절차의 이름 (선택적으로 스키마 자격).
Argmode
인수의 모드 :in
, out
, inout
또는variadic
. 생략하면 기본값은입니다.in
.
argname
인수의 이름.
Argtype
프로 시저의 인수의 데이터 유형 (선택적으로 스키마 자격이있는 경우). 인수 유형은 기본, 복합 또는 도메인 유형 일 수 있거나 테이블 열의 유형을 참조 할 수 있습니다.
구현 언어에 따라 지정할 수도 있습니다“pseudo-types”와 같은cstring
. 의사 유형은 실제 인수 유형이 불완전하게 지정되거나 일반 SQL 데이터 유형 세트 외부에 있음을 나타냅니다.
열의 유형은 서면으로 참조됩니다
. 이 기능을 사용하면 때때로 표의 정의 변경과 독립적 인 절차를 수행하는 데 도움이됩니다.table_name
.column_name
%유형
default_expr
매개 변수가 지정되지 않은 경우 기본값으로 사용할 표현식. 표현은 매개 변수의 인수 유형에 강요되어야합니다. 기본값이있는 매개 변수를 따르는 모든 입력 매개 변수도 기본값이 있어야합니다.
lang_name
절차가 구현 된 언어의 이름.SQL
, C
, 내부
또는 사용자 정의 절차 언어의 이름 (예 :PLPGSQL
. 기본값은SQL
ifsql_body
지정되어 있습니다. 단일 따옴표로 이름을 동봉하는 것은 더 이상 사용되지 않으며 일치하는 경우가 필요합니다.
변환 for typetype_name
[, ...]
호출을 절차로 변환하는 목록이 적용되어야합니다. 변환 SQL 유형과 언어 별 데이터 유형으로 변환; 보다변환 생성. 토토 핫 적 언어 구현에는 일반적으로 내장 유형에 대한 하드 코드 지식이 있으므로 여기에 나열 될 필요가 없습니다. 토토 핫 적 언어 구현이 유형을 처리하는 방법을 모르고 변환이 제공되지 않으면 데이터 유형을 변환하기위한 기본 동작으로 돌아가지만 이는 구현에 따라 다릅니다..
[외부] Security Invoker
[외부] Security Definer
보안 invoker
이를 호출하는 사용자의 권한으로 토토 핫를 실행해야 함을 나타냅니다. 그것은 기본입니다.보안 정의기
이를 소유 한 사용자의 권한으로 토토 핫를 실행하도록 지정합니다.
키워드외부
는 SQL 준수를 허용하지만 SQL과 달리 모든 절차에 적용되는 SQL과 달리 선택 사항입니다..
aSecurity Definer
토토 핫는 트랜잭션 제어 문을 실행할 수 없습니다 (예 :커밋
and롤백
, 언어에 따라).
configuration_parameter
value
theset
절 항목은 프로 시저를 입력 할 때 지정된 구성 매개 변수를 지정된 값으로 설정 한 다음 프로 시저가 종료 될 때 이전 값으로 복원됩니다..현재에서 설정
현재의 매개 변수의 값을 저장합니다토토 핫 만들기
토토 핫가 입력 될 때 적용 할 값으로 실행됩니다.
if aset
조항은 토토 핫에 첨부 된 다음 a의 효과로컬 설정
동일한 변수의 절차 내부에서 실행 된 명령은 절차로 제한됩니다. 구성 매개 변수의 이전 값은 프로 시저 Exit에서 여전히 복원됩니다. 그러나 평범한set
명령 (Local
)은를 무시합니다.set
조항, 이전과 마찬가지로로컬 설정
명령 : 현재 트랜잭션이 롤백되지 않는 한 절차 종료 후에 그러한 명령의 효과가 지속됩니다.
if aSET
조항은 절차에 첨부 된 다음 해당 토토 핫는 트랜잭션 제어 문을 실행할 수 없습니다 (예 :커밋
and롤백
, 언어에 따라).
참조SETand윈 토토 : 문서 : 17 : 19 장 서버 구성허용 매개 변수 이름 및 값에 대한 자세한 내용은
정의
절차를 정의하는 문자열 상수; 의미는 언어에 따라 다릅니다. 내부 절차 이름, 객체 파일의 경로, SQL 명령 또는 절차 언어로 텍스트가 될 수 있습니다.
종종 달러 견적을 사용하는 것이 도움이됩니다 (참조섹션 4.1.2.4) 일반 단일 인용문이 아닌 절차 정의 문자열을 작성합니다. 달러 인용이 없으면 절차 정의의 단일 따옴표 또는 백 슬래시를 두 배로 늘려서 피해야합니다.
OBJ_FILE
, link_symbol
이 형태의as
절은 C 언어 소스 코드의 절차 이름이 SQL 프로 시저의 이름과 같지 않을 때 동적으로로드 가능한 C 언어 절차에 사용됩니다. 문자열OBJ_FILE
| 편집 된 C 절차가 포함 된 공유 라이브러리 파일의 이름이며로드
명령. 문자열link_symbol
는 절차의 링크 기호, 즉 C 언어 소스 코드의 절차 이름입니다. 링크 기호가 생략되면 정의되는 SQL 프로 시저의 이름과 동일하다고 가정합니다.
반복 될 때프로 시저 작성
통화는 동일한 개체 파일을 참조하고 파일은 세션 당 한 번만로드됩니다. 파일을 언로드하고 다시로드하려면 (아마도 개발 중) 새 세션을 시작하십시오.
SQL_BIDE
a언어 SQL
토토 핫. 이것은 블록이어야합니다
원자 시작성명서
;성명서
; ...성명서
; 끝
이것은 절차 본문의 텍스트를 문자열 상수로 작성하는 것과 유사합니다 (참조정의
위), 그러나 몇 가지 차이점이 있습니다.이 양식은에만 작동합니다.언어 SQL
, 문자열 상수 양식은 모든 언어에 대해 작동합니다. 이 양식은 절차 정의 시간에 구문 분석되며 문자열 상수 양식은 실행 시간에 구문 분석됩니다. 따라서이 형식은 다형성 인수 유형 및 절차 정의 시간에서 해결할 수없는 다른 구성을 지원할 수 없습니다. 이 양식은 절차와 절차 본문에 사용 된 객체 사이의 종속성을 추적합니다.드롭 ... 캐스케이드
는 올바르게 작동하는 반면, 문자열 리터럴을 사용하는 양식은 매달려있는 절차를 남길 수 있습니다. 마지막 으로이 양식은 SQL 표준 및 기타 SQL 구현과 더 호환됩니다.
절차 생성 insert_data (정수, B 정수) 언어 SQL $$로 TBL 값 (a)에 삽입; tbl 값 (b)에 삽입; $$;
또는
절차 생성 insert_data (정수, B 정수) 언어 SQL 원자를 시작하십시오 TBL 값 (a)에 삽입; tbl 값 (b)에 삽입; 끝;
다음과 같이 전화하십시오 :
insert_data (1, 2); 호출
a토토 핫 만들기
명령은 SQL 표준에 정의되어 있습니다. 그만큼PostgreSQL구현은 호환 가능한 방식으로 사용할 수 있지만 많은 확장 기능이 있습니다. 자세한 내용은 참조하십시오함수 만들기.
문서에 올바른 것이 없으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면