CREATE FUNCTION
PostgreSQL 7.1.1 Documentation
Prev
Next
CREATE FUNCTION
Name
CREATE FUNCTION - 새 함수 정의CREATE FUNCTION name ( [ ftype [, ...] ] )
RETURNS rtype
AS definition
LANGUAGE 'langname'
[ WITH ( attribute [, ...] ) ]
CREATE FUNCTION name ( [ ftype [, ...] ] )
RETURNS rtype
AS obj_file , link_symbol
LANGUAGE 'langname'
[ WITH ( attribute [, ...] ) ]
입력
name
생성할 함수 이름입니다.
ftype
함수 매개 변수의 데이터 형식입니다. 입력 형식은 기본 형식, 조합 형식이나opaque일 수 있습니다.Opaque는 이 함수가 char*와 같은 비 SQL 형식을 받아들인다는 것을 나타냅니다.
rtype
데이터 형식을 되돌려줍니다. 입력 형식은 기본 형식, 조합 형식, setof type 또는opaque일 수 있습니다.setof 수식어는 이 함수가 한 항목이 아니라 한 항목으로 되돌아온다는 것을 나타낸다.
attribute
최적화를 위한 함수에 대한 선택 가능한 정보자세한 내용은 아래를 참조하십시오.
definition
함수를 정의하는 문자열그 의미는 언어에 달려 있다.내부 함수 이름, 목표 파일을 가리키는 경로, SQL 조회 또는 프로세스 언어의 텍스트가 될 수 있습니다.
obj_file ,
link_symbol
이 형식의 AS 자구는 동적 링크의 C 언어 함수에 사용되며, 이 함수는 C 소스 코드의 이름과 SQL 함수의 이름이 다르다.문자열 obj_파일은 동적 마운트 가능한 대상을 포함하는 파일 이름입니다. 링크_symbol은 대상의 링크 기호입니다. 이 기호는 C 소스 코드의 함수 이름과 같습니다.
langname
'sql'?C','internal'또는'plname', 여기'plname'은 창설 과정의 언어 이름입니다. CREATE LANGUAGE를 참고하여 자세한 정보를 얻으십시오.
출력
CREATE
명령이 되돌아오는 정보를 성공적으로 실행했습니다.
묘사
CREATE FUNCTION은 Postgres 사용자가 데이터베이스에 함수를 등록할 수 있도록 합니다. 그리고 이 사용자는 이 함수의 소유자로 간주됩니다.
함수 속성
WITH 자구에는 다음과 같은 내용이 있습니다.
iscachable
이 함수는 같은 값을 입력할 때 항상 같은 값을 되돌려줍니다. (즉, 데이터베이스 검색을 하지 않거나 파라미터 목록에 직접 나타나지 않은 정보를 사용합니다.)최적화기는 iscachable를 사용하여 이 함수에 대한 호출이 안전한지 미리 계산합니다.
isstrict
isstrict는 그 매개 변수가 NULL이면 이 함수는 항상 NULL로 되돌아옵니다. 이 속성을 설명하면 NULL 매개 변수가 존재할 때 이 함수를 실행하지 않습니다.단지 자동으로 NULL 결과를 가정할 뿐입니다. isstrict가 없으면 이 함수는 NULL 입력을 호출하고 처리됩니다. 나머지 일은 함수 작성자의 책임으로 NULL이 반드시 응답해야 하는지 확인하는 것입니다.
주의하다
PostgreSQL 프로그래머 매뉴얼을 참고하여 함수를 통해 Postgres를 확장하는 장과 절에서 외부 함수 쓰기에 대한 더 많은 정보를 얻으십시오.
DROP FUNCTION을 사용하여 사용자 정의 함수를 삭제합니다.
완전한 SQL92 형식 문법을 매개 변수와 반환 값을 입력하는 데 사용할 수 있습니다. 단, 일부 형식 성명의 세부 사항 (예를 들어numeric 형식의 정밀도역) 은 하층 함수에 의해 이루어지며, CREATE FUNCTION 명령에 의해 몰래 삼켜집니다. (즉, 더 이상 식별되거나 강제되지 않습니다.)
Postgres는 함수 "재부팅"을 허용합니다.즉, 같은 함수 이름은 몇 개의 다른 함수에 사용할 수 있으며, 그것들의 매개 변수가 그것들을 구분할 수 있다면.단, 이 기능은 internal과 C 언어의 함수에 사용할 때 조심해야 한다.
두 internal 함수가 같은 C 이름을 가지고 있을 때 링크 오류가 발생할 수 있습니다.이 문제를 해결하려면 서로 다른 C 이름 (예를 들어 매개 변수 형식을 C 이름의 일부로 사용) 을 부여하고 CREATE FUNCTION의 AS 자구에 이 이름을 성명합니다.AS 자구가 비어 있으면 CREATE FUNCTION은 함수의 C 이름이 SQL 이름과 같다고 가정합니다.
이와 유사하게 여러 개의 C 언어 함수로 SQL 함수를 다시 불러오면 각 C 언어 함수의 실례에 독립된 이름을 주고 CREATE FUNCTION 문법의 AS 문장의 다른 형식을 사용하여 다시 불러오는 SQL 함수 이름이 상응하는 동적 링크 대상으로 정확하게 해석되도록 한다.
활용단어참조
간단한 SQL 함수를 만듭니다.CREATE FUNCTION one() RETURNS int4
AS 'SELECT 1 AS RESULT'
LANGUAGE 'sql';
SELECT one() AS answer;
answer
--------
1
이 예는 사용자가 만든 공유 라이브러리의 경로를 호출하여 C 함수를 만듭니다. 이 경로는 검출 위치를 계산하고 함수 매개 변수의 검출 위치가 정확하면 TRUE를 되돌려줍니다. 이것들은 CHECK 제약을 사용하여 이루어집니다.CREATE FUNCTION ean_checkdigit(bpchar, bpchar) RETURNS boolean
AS '/usr1/proj/bray/sql/funcs.so' LANGUAGE 'c';
CREATE TABLE product (
id char(8) PRIMARY KEY,
eanprefix char(8) CHECK (eanprefix ~ '[0-9]{2}-[0-9]{5}')
REFERENCES brandname(ean_prefix),
eancode char(6) CHECK (eancode ~ '[0-9]{6}'),
CONSTRAINT ean CHECK (ean_checkdigit(eanprefix, eancode))
);
이 예는 사용자 정의 형식인complex와 내부 형식인point 사이에서 형식 변환을 하는 함수를 만듭니다.이 함수는 C 소스 코드에서 컴파일된 동적 마운트 대상으로 이루어집니다.Postgres의 경우 형식 변환 함수를 자동으로 찾으려면 sql 함수는 반환 형식과 이름이 같아야 하기 때문에 다시 불러오는 것은 불가피합니다.이 함수 이름은 SQL 정의에 있는 AS 서브문장의 두 번째 유형을 사용하여 다시 로드됩니다.CREATE FUNCTION point(complex) RETURNS point
AS '/home/bernie/pgsql/lib/complex.so', 'complex_to_point'
LANGUAGE 'c';
이 함수의 C 정의는 다음과 같습니다.Point * complex_to_point (Complex *z)
{
Point *p;
p = (Point *) palloc(sizeof(Point));
p->x = z->x;
p->y = z->y;
return p;
}
호환성
SQL92
CREATE FUNCTION은 Postgres 언어의 확장입니다.
SQL/PSM
참고: PSM은 연속 엔클로저(Persistent Stored Modules)를 나타냅니다. 프로세스화된 언어이며 SQL/PSM은 함수 확장성을 허용하는 표준입니다.
SQL/PSM
CREATE FUNCTION 구문은 다음과 같습니다.CREATE FUNCTION name
( [ [ IN | OUT | INOUT ] type [, ...] ] )
RETURNS rtype
LANGUAGE 'langname'
ESPECIFIC routineSQL-statement
Prev
Home
Next
CREATE DATABASE
Up
CREATE GROUP
|----------------------------------------------------------------------------------------|
저작권 성명 저작권 소유 @zhyiwww
인용은 출처를 밝히십시오http://www.blogjava.net/zhyiwww
|----------------------------------------------------------------------------------------|
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
CREATE FUNCTION name ( [ ftype [, ...] ] )
RETURNS rtype
AS definition
LANGUAGE 'langname'
[ WITH ( attribute [, ...] ) ]
CREATE FUNCTION name ( [ ftype [, ...] ] )
RETURNS rtype
AS obj_file , link_symbol
LANGUAGE 'langname'
[ WITH ( attribute [, ...] ) ]
CREATE FUNCTION one() RETURNS int4
AS 'SELECT 1 AS RESULT'
LANGUAGE 'sql';
SELECT one() AS answer;
answer
--------
1
CREATE FUNCTION ean_checkdigit(bpchar, bpchar) RETURNS boolean
AS '/usr1/proj/bray/sql/funcs.so' LANGUAGE 'c';
CREATE TABLE product (
id char(8) PRIMARY KEY,
eanprefix char(8) CHECK (eanprefix ~ '[0-9]{2}-[0-9]{5}')
REFERENCES brandname(ean_prefix),
eancode char(6) CHECK (eancode ~ '[0-9]{6}'),
CONSTRAINT ean CHECK (ean_checkdigit(eanprefix, eancode))
);
CREATE FUNCTION point(complex) RETURNS point
AS '/home/bernie/pgsql/lib/complex.so', 'complex_to_point'
LANGUAGE 'c';
Point * complex_to_point (Complex *z)
{
Point *p;
p = (Point *) palloc(sizeof(Point));
p->x = z->x;
p->y = z->y;
return p;
}
CREATE FUNCTION name
( [ [ IN | OUT | INOUT ] type [, ...] ] )
RETURNS rtype
LANGUAGE 'langname'
ESPECIFIC routineSQL-statement
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.