이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 스포츠 토토 결과 만들기버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

만들기 토토 사이트 순위

이름

CREATE FUNCTION -- 새 함수 정의

시놉시스

토토 사이트 순위 생성 [ 또는 교체 ]이름 ( [ [ argmode ] [ 인수이름 ] argtype[, ...] ] )
    [ 반품재입력]
   언어언어명| 불변 | 안정적 | 휘발성
    | NULL 입력 시 호출됨 | NULL 입력 시 NULL 반환 | 엄격
    | [ 외부 ] 보안 호출자 | [ 외부 ] 보안 정의자
    | 그대로 '정의'
    | 그대로 'obj_file', 'link_symbol'
   ...
    [ 와 (속성 [, ...] ) ]

설명

함수 생성새로운 것을 정의합니다 기능.함수 생성 또는 교체새 기능을 생성하거나 기존 기능을 대체합니다. 정의.

스키마 이름이 포함되면 함수는 다음에 생성됩니다. 지정된 스키마. 그렇지 않으면 현재에 생성됩니다. 스키마. 새 함수의 이름은 기존 함수와 일치하면 안 됩니다. 동일한 스키마에서 동일한 인수 유형을 사용하는 함수입니다. 그러나 다양한 인수 유형의 함수는 이름을 공유할 수 있습니다. (이것을 호출합니다.오버로딩).

기존 함수의 정의를 업데이트하려면 다음을 사용하세요.함수 생성 또는 교체. 그렇지 않다 함수의 이름이나 인수 유형을 변경할 수 있습니다. 방식으로(시도한다면 실제로는 새롭고 고유한 기능). 또한,생성 또는 교체 토토 사이트 순위귀하의 반환 유형을 변경할 수 없습니다. 기존 토토 사이트 순위. 그렇게 하려면 토토 사이트 순위. (사용시아웃매개변수, 이는 이름이나 유형을 변경할 수 없음을 의미합니다.아웃삭제를 제외한 매개변수 토토 사이트 순위.)

함수를 삭제한 후 다시 생성하면 새 함수는 예전과 같은 실체가 아닙니다. 기존 항목을 삭제해야 합니다. 이전 함수를 참조하는 규칙, 보기, 트리거 등. 사용함수 생성 또는 교체변경하려면 참조하는 객체를 중단하지 않고 함수 정의 기능.

함수를 생성한 사용자는 다음의 소유자가 됩니다. 기능.

매개변수

이름

함수의 이름(선택적으로 스키마 한정) 생성합니다.

argmode

인수 모드: 둘 중 하나IN, 아웃또는INOUT. 생략하면 기본값은IN.

인수이름

인수의 이름. 일부 언어(현재는 PL/pgSQL)에서는 함수 본문에 이름을 사용할 수 있습니다. 에 대한 다른 언어에서는 입력 인수의 이름이 추가입니다. 문서. 그러나 출력 인수의 이름은 다음과 같습니다. 결과의 열 이름을 정의하므로 중요합니다. 행 유형. (출력 인수의 이름을 생략하면 시스템은 기본 열 이름을 선택합니다.)

argtype

함수 인수의 데이터 유형(선택 사항) 스키마 한정)(있는 경우). 인수 유형은 기본일 수 있습니다. 복합 또는 도메인 유형이거나 테이블 열입니다.

구현 언어에 따라 다음과 같을 수도 있습니다. 지정할 수 있음"유사형"예:cstring. 유사형은 다음을 나타냅니다. 실제 인수 유형이 불완전하거나 지정되었거나 일반 SQL 데이터 집합 외부에 있음 유형.

열의 유형은 쓰기로 참조됩니다.테이블 이름.열 이름%TYPE. 이것을 사용하여 기능은 때때로 기능을 독립적으로 만드는 데 도움이 될 수 있습니다. 테이블 정의가 변경되었습니다.

재입력

반환 데이터 유형(선택적으로 스키마 한정). 는 반환 유형은 기본, 복합 또는 도메인 유형일 수 있습니다. 테이블 열의 유형을 참조할 수 있습니다. 에 따라 구현 언어를 지정할 수도 있습니다."유사형"예:cstring.

있을 때아웃또는INOUT매개변수,반환절은 생략될 수 있습니다. 존재하는 경우, 출력에 암시된 결과 유형과 일치해야 합니다. 매개변수:기록있는 경우 여러 출력 매개변수 또는 단일과 동일한 유형 출력 매개변수입니다.

SETOF수정자는 다음을 나타냅니다. 이 함수는 항목이 아닌 일련의 항목을 반환합니다. 단일 항목.

열의 유형은 쓰기로 참조됩니다.테이블 이름.열 이름%TYPE.

언어명

함수가 속한 언어의 이름 에 구현되었습니다. 아마도SQL, C, 내부또는 사용자 정의 이름 절차적 언어. 이전 버전과의 호환성을 위해 이름은 작은따옴표로 묶을 수 있습니다.

불변
안정적
휘발성

이러한 속성은 시스템에 안전한지 여부를 알려줍니다. 함수에 대한 여러 평가를 단일 평가로 대체 평가, 런타임 최적화를 위한 것입니다. 선택은 최대 1개 지정될 수 있습니다. 이들 중 어느 것도 나타나지 않으면,휘발성기본 가정입니다.

불변은 다음을 나타냅니다. 함수는 동일한 값이 주어지면 항상 동일한 결과를 반환합니다. 인수 값; 즉, 데이터베이스 조회를 수행하지 않습니다. 또는 그 밖에 직접적으로 존재하지 않는 정보를 사용합니다. 인수 목록. 이 옵션이 주어지면 모두 상수 인수를 갖는 함수는 즉시 실행될 수 있습니다. 함수 값으로 대체되었습니다.

안정적은(는) 단일 테이블 스캔 함수는 일관되게 다음을 반환합니다. 동일한 인수 값에 대해 동일한 결과가 발생하지만 결과는 SQL 문 전체에서 변경될 수 있습니다. 이것은 결과가 다음에 따라 달라지는 함수에 대한 적절한 선택 데이터베이스 조회, 매개변수 변수(예: 현재 시간대) 등. 또한 다음 사항에 유의하세요.현재_타임스탬프함수 계열 그 값이 내부적으로 변하지 않기 때문에 안정적인 것으로 간주됩니다. 거래.

휘발성은 다음을 나타냅니다. 단일 테이블 스캔 내에서도 함수 값이 변경될 수 있으며, 그래서 최적화를 할 수 없습니다. 상대적으로 적은 수의 데이터베이스 이런 의미에서 함수는 휘발성입니다. 몇 가지 예는 다음과 같습니다무작위(), currval(), timeofday(). 하지만 어떤 기능이든 부작용이 있는 경우에도 휘발성으로 분류되어야 합니다. 호출이 실패하는 것을 방지하기 위해 결과는 상당히 예측 가능합니다. 최적화되었습니다. 예는 다음과 같습니다setval().

자세한 내용은 참조섹션 32.6.

NULL 입력 시 호출됨
NULL 입력 시 NULL을 반환합니다.
STRICT

NULL 입력 시 호출됨( 기본값)은 함수가 호출될 것임을 나타냅니다. 일반적으로 인수 중 일부가 null인 경우입니다. 그때이다 null을 확인하는 함수 작성자의 책임 필요한 경우 가치를 평가하고 적절하게 대응하세요.

NULL 입력 시 NULL을 반환합니다.또는STRICT함수를 나타냅니다. 인수 중 하나라도 null일 때마다 항상 null을 반환합니다. 이 매개변수를 지정하면 함수가 작동하지 않습니다. null 인수가 있을 때 실행됩니다. 대신 null 결과는 자동으로 가정됩니다.

[외부] 보안 호출자
[외부] 보안 정의자

보안 호출자다음을 나타냅니다. 이 기능은 다음의 권한으로 실행됩니다. 그것을 호출하는 사용자. 그게 기본값이에요.보안 정의자함수를 지정합니다. 해당 사용자의 권한으로 실행됩니다. 만들어냈습니다.

핵심 단어외부이다 SQL 적합성은 허용되지만 선택 사항입니다. SQL과 달리 이 기능은 SQL이 아닌 모든 함수에 적용됩니다. 외부에만 있습니다.

정의

함수를 정의하는 문자열 상수; 의미 언어에 따라 다릅니다. 내부 기능일 수도 있습니다. 이름, 개체 파일의 경로, SQL 명령 또는 텍스트 절차적 언어로.

obj_file, link_symbol

이 형태의AS절은 동적으로 로드 가능한 C 언어 함수에 사용됩니다. C 언어 소스 코드의 함수 이름이 동일하지 않습니다. SQL 함수의 이름으로. 문자열obj_file파일 이름입니다 동적으로 로드 가능한 객체를 포함하고, 그리고link_symbol함수 링크입니다 기호, 즉 C 언어의 함수 이름 소스 코드. 링크기호가 생략된 경우로 간주 SQL 함수의 이름과 동일해야 합니다. 정의되었습니다.

속성

선택적인 부분을 지정하는 역사적 방법 기능에 대한 정보입니다. 다음 속성 여기에 나타날 수 있습니다:

isStrict

다음과 동일함STRICT또는NULL에 대해 NULL을 반환합니다. 입력.

isCachable

isCachable구식입니다 에 해당함불변; 이전 버전과의 호환성을 위해 여전히 허용됩니다. 이유.

속성 이름은 대소문자를 구분하지 않습니다.

참고

참조PostgreSQL : 문서 : 8.1 : 사용자 스포츠 토토 함수더 자세히 알아보기 쓰기 기능에 대한 정보입니다.

전체SQL유형 구문은 다음과 같습니다. 입력 인수 및 반환 값에 허용됩니다. 그러나 일부 유형 사양의 세부정보(예: 정밀도 필드 유형숫자)의 책임은 다음과 같습니다. 기본 기능 구현 및 자동으로 삼켜집니다. (즉, 인식되거나 시행되지 않음)함수 생성명령.

PostgreSQL토토 사이트 순위 허용오버로딩; 즉, 같은 이름이 될 수 있습니다. 여러 다른 기능을 가지고 있는 한 사용할 수 있습니다. 인수 유형이 다릅니다. 그러나 모든 함수의 C 이름은 달라야 하므로 오버로드된 C 함수를 제공해야 합니다. 다른 C 이름(예를 들어 인수 유형을 C 이름).

두 기능이 동일하면 동일한 것으로 간주됩니다. 이름과입력인수 유형, 모두 무시아웃매개변수. 따라서 예를 들어 이러한 선언은 충돌합니다.

함수 생성 foo(int) ...
함수 만들기 foo(int, out text) ...

반복되는 경우함수 생성호출 동일한 객체 파일을 참조하면 파일은 한 번만 로드됩니다. 받는 사람 파일을 언로드하고 다시 로드하고(아마도 개발 중에), 다음을 사용하세요.로드명령.

사용배트맨 토토 : 문서 : 8사용자 정의 함수를 제거합니다.

달러 인용을 사용하는 것이 종종 도움이 됩니다(참조섹션 4.1.2.2) 일반 문자열이 아닌 함수 정의 문자열을 작성하려면 작은따옴표 구문. 달러 인용 없이 작은따옴표나 함수 정의의 백슬래시는 다음으로 이스케이프되어야 합니다. 두 배로 늘리세요.

기능을 정의하려면 사용자는 다음을 가지고 있어야 합니다.사용언어에 대한 권한입니다.

언제함수 생성 또는 교체이다 기존 기능, 소유권 및 함수의 권한은 변경되지 않습니다. 기타 모든 기능 속성에는 지정되거나 암시된 값이 할당됩니다. 명령. 이를 대체하려면 해당 기능을 소유해야 합니다(여기에는 다음이 포함됩니다). 소유 역할의 구성원임).

다음은 시작하는 데 도움이 되는 몇 가지 간단한 예입니다. 에 대한 자세한 내용과 예시는 참조하세요.PostgreSQL : 문서 : 8.1 : 사용자 스포츠 토토 함수.

CREATE FUNCTION add(정수, 정수) RETURNS 정수
    AS '$1 + $2 선택;'
    언어 SQL
    불변
    NULL 입력 시 NULL을 반환합니다.

인수 이름을 사용하여 정수를 증가시킵니다.PL/pgSQL:

CREATE OR REPLACE FUNCTION 증분(i 정수) $$로 정수를 반환합니다.
        시작
                RETURN i + 1;
        끝;
$$ 언어 plpgsql;

여러 출력 매개변수가 포함된 레코드를 반환합니다:

CREATE FUNCTION dup(in int, out f1 int, out f2 텍스트)
    AS $$ SELECT $1, CAST($1 AS 텍스트) || '는 텍스트입니다' $$
    언어 SQL;

SELECT * FROM dup(42);

명시적으로 동일한 작업을 더 장황하게 수행할 수 있습니다. 명명된 복합 유형:

CREATE TYPE dup_result AS(f1 int, f2 텍스트);

함수 생성 dup(int)는 dup_result를 반환합니다.
    AS $$ SELECT $1, CAST($1 AS 텍스트) || '는 텍스트입니다' $$
    언어 SQL;

SELECT * FROM dup(42);

쓰기보안 정의자토토 사이트 순위 안전하게

왜냐면 a보안 정의자함수 그것을 생성한 사용자의 권한으로 실행되므로 주의 기능이 오용되지 않도록 보장하는 것이 필요합니다. 에 대한 보안,검색_경로신뢰할 수 없는 사용자가 쓸 수 있는 모든 스키마를 제외하도록 설정해야 합니다. 이를 통해 악의적인 사용자가 마스크 개체를 생성하는 것을 방지할 수 있습니다. 함수에서 사용하는 객체입니다. 이 점에서 특히 중요한 는 임시 테이블 스키마이며, 먼저 검색됩니다. 기본값이며 일반적으로 누구나 쓸 수 있습니다. 안전한 배치 임시 스키마를 마지막에 검색하도록 강제하여 가질 수 있습니다. 이렇게 하려면 다음을 작성하세요.pg_temp마지막으로 입장검색_경로. 이 기능 안전한 사용법을 보여줍니다:

CREATE FUNCTION check_password(TEXT 이름 취소, TEXT 전달)
부울을 $$로 반환합니다.
DECLARE가 BOOLEAN을 통과했습니다.
        old_path 텍스트;
시작
        -- 이전 search_path를 저장합니다. current_setting을 충족해야 합니다.
        -- 올바른 함수를 호출하는지 확인하기 위해
        old_path := pg_catalog.current_setting('검색_경로');

        -- 보안 검색_경로(신뢰할 수 있는 스키마, 'pg_temp')를 설정합니다.
        -- 이전 값이 복원되도록 is_local = true로 설정합니다.
        -- 기능이 끝나기 전에 오류가 발생한 경우.
        실행 pg_catalog.set_config('search_path', 'admin, pg_temp', true);

        -- 우리가 하려고 온 안전한 일이라면 뭐든지 하세요.
        SELECT (pwd = $2) INTO가 전달되었습니다.
        비밀번호에서
        사용자 이름 = $1;

        -- 호출자의 search_path 복원
        실행 pg_catalog.set_config('search_path', old_path, true);

        반환이 통과되었습니다.
끝;
$$ 언어 plpgsql 보안 정의자;

호환성

A 함수 생성명령이 정의되었습니다 SQL:1999 이상에서.PostgreSQL버전이 비슷하지만 완전하지는 않습니다. 호환 가능. 속성은 이식성이 없으며 이식성이 없습니다. 사용 가능한 언어가 다릅니다.

다른 데이터베이스 시스템과의 호환성을 위해,argmode또는 이전에 쓸 수 있습니다. 이후argname. 하지만 첫 번째만 방식은 표준을 준수합니다.