| 롤 토토 : 문서 : 9.5 : 롤 토토 | |||
|---|---|---|---|
| PostgreSQL : 문서 : 9.5 : 후드 아래 메이저 토토 사이트/PGSQL | Postgre토토 사이트 순위 : 문서 : 9.5 : PL/PG토토 사이트 순위 -토토 사이트 순위 절차 언어 | 40장.메이저 토토 사이트/pgSQL - SQL절차적 언어 | 다음 |
개발할 수 있는 좋은 방법 중 하나메이저 토토 사이트/pgSQL함수를 생성하려면 원하는 텍스트 편집기를 사용하고, 다른 창에서는 다음을 사용하는 것입니다.psql해당 기능을 로드하고 테스트합니다. 이런 식으로 수행하는 경우 다음을 사용하여 함수를 작성하는 것이 좋습니다.함수 생성 또는 교체. 이렇게 하면 파일을 다시 로드하여 함수 정의를 업데이트할 수 있습니다. 예를 들어:
함수 생성 또는 교체 testfunc(integer) $$로 정수를 반환합니다.
....
$$ 언어 plpgsql;
실행 중psql, 다음을 사용하여 이러한 함수 정의 파일을 로드하거나 다시 로드할 수 있습니다.
\i 파일명.sql
그런 다음 즉시 SQL 명령을 실행하여 함수를 테스트합니다.
개발하는 또 다른 좋은 방법메이저 토토 사이트/pgSQL은 절차적 언어로 개발을 용이하게 하는 GUI 데이터베이스 액세스 도구입니다. 그러한 도구의 한 예는 다음과 같습니다.pgAdmin, 다른 것도 존재하지만. 이러한 도구는 작은따옴표를 이스케이프 처리하고 함수를 더 쉽게 재생성하고 디버그하는 등의 편리한 기능을 제공하는 경우가 많습니다.
a의 코드메이저 토토 사이트/pgSQL함수는 다음에 지정됩니다.함수 생성문자열 리터럴로. 작은따옴표를 둘러싸서 일반적인 방법으로 문자열 리터럴을 작성하는 경우 함수 본문 내부의 모든 작은따옴표를 두 배로 늘려야 합니다. 마찬가지로 모든 백슬래시는 두 배가 되어야 합니다(이스케이프 문자열 구문이 사용된다고 가정). 이중 따옴표는 가장 지루한 일이며, 더 복잡한 경우에는 여섯 개 이상의 인접한 따옴표가 필요할 수 있기 때문에 코드를 완전히 이해할 수 없게 될 수 있습니다. 대신 함수 본문을 다음과 같이 작성하는 것이 좋습니다."달러 인용"문자열 리터럴(참조섹션 4.1.2.4). 달러 인용 접근 방식에서는 따옴표를 두 배로 표시하지 않고 대신 필요한 각 중첩 수준에 대해 다른 달러 인용 구분 기호를 선택하도록 주의하십시오. 예를 들어, 다음과 같이 작성할 수 있습니다.함수 생성다음과 같은 명령:
함수 생성 또는 교체 testfunc(integer) 정수를 $PROC$로 반환합니다.
....
$PROC$ 언어 plpgsql;
이 안에는 SQL 명령의 간단한 리터럴 문자열에 따옴표를 사용할 수 있으며$$문자열로 조합하는 SQL 명령 조각을 구분합니다. 다음을 포함하는 텍스트를 인용해야 하는 경우$$, 다음을 사용할 수 있습니다.$Q$등.
다음 차트는 달러 인용 없이 인용 부호를 쓸 때 무엇을 해야 하는지 보여줍니다. 달러 이전 인용 코드를 더 이해하기 쉬운 코드로 변환할 때 유용할 수 있습니다.
함수 본문을 시작하고 끝내려면 다음과 같이 하십시오:
CREATE FUNCTION foo()는 정수를 '로 반환합니다.
....
' 언어 메이저 토토 사이트pgsql;
작은따옴표로 묶인 함수 본문 내의 모든 위치, 따옴표반드시쌍으로 나타납니다.
함수 본문 내부의 문자열 리터럴의 경우, 예:
a_output := ''어쩌고''; SELECT * FROM 사용자 WHERE f_name=''foobar'';
달러 인용 방식에서는 다음과 같이 작성하면 됩니다:
a_output := '어쩌고'; SELECT * fROM 사용자 WHERE f_name='foobar';
정확히 그거야메이저 토토 사이트/pgSQL파서는 두 경우 모두 볼 수 있습니다.
함수 본문 내부의 문자열 상수에 작은따옴표가 필요한 경우, 예를 들면 다음과 같습니다:
a_output := a_output || '' AND 이름 LIKE ''''foobar'''' AND xyz''
실제로 추가된 값a_output다음과 같을 것입니다:그리고 'foobar' AND xyz와 같은 이름.
달러 인용 방식에서는 다음과 같이 작성합니다:
a_output := a_output || $$ AND 이름 LIKE 'foobar' AND xyz$$
이 주변의 달러 인용 구분 기호가 단지 따옴표가 아니라는 점에 주의하십시오.$$.
함수 본문 내부 문자열의 작은따옴표가 해당 문자열 상수의 끝에 인접한 경우, 예:
a_output := a_output || '' AND 이름 LIKE ''''foobar''''''
다음에 추가된 값a_output그러면 다음과 같습니다:그리고 'foobar' 같은 이름.
달러 인용 방식에서는 다음과 같습니다.
a_output := a_output || $$ 및 'foobar'$$ 같은 이름
문자열 상수(8개의 따옴표에 해당)에 두 개의 작은따옴표를 원하고 이것이 해당 문자열 상수의 끝에 인접해 있는 경우(2개 더). 아마도 다음과 같이 다른 함수를 생성하는 함수를 작성하는 경우에만 필요할 것입니다.예 40-9. 예를 들어:
a_output := a_output || '' v_''인 경우 ||
Referrer_keys.kind || '' 좋다 ''''''''''
|| Referrer_keys.key_string || ''''''''''
그런 다음 ''''''를 반환합니다 || Referrer_keys.referrer_type
|| ''''''; 다음 경우 종료;'';
값a_output그러면 다음과 같습니다:
v_...가 ''...''와 같은 경우 ''...''를 반환합니다. 다음과 같은 경우 종료;
달러 인용 방식에서는 다음과 같습니다.
a_output := a_output || $$ v_$$인 경우 || Referrer_keys.kind || $$는 '$$처럼
|| Referrer_keys.key_string || $$'
그런 다음 '$$ || Referrer_keys.referrer_type
|| $$'; 다음 경우 종료;$$;
여기서는 작은따옴표만 넣으면 된다고 가정합니다.a_output, 사용하기 전에 다시 인용되기 때문입니다.
사용자가 해를 입기 전에 간단하지만 일반적인 문제의 사례를 찾는 데 도움을 주기 위해,PL/PgSQL추가 제공체크. 활성화되면 구성에 따라 다음 중 하나를 내보내는 데 사용할 수 있습니다.경고또는오류함수 컴파일 중. a를 받은 함수경고추가 메시지 생성 없이 실행될 수 있으므로 별도의 개발 환경에서 테스트하는 것이 좋습니다.
이러한 추가 검사는 구성 변수를 통해 활성화됩니다.메이저 토토 사이트pgsql.extra_warnings경고 및메이저 토토 사이트pgsql.extra_errors오류용. 둘 다 쉼표로 구분된 검사 목록으로 설정할 수 있습니다."없음"또는"모두". 기본값은"없음". 현재 사용 가능한 검사 목록에는 다음 하나만 포함됩니다.
선언이 이전에 정의된 변수를 숨기는지 확인합니다.
다음 예는 다음의 효과를 보여줍니다.메이저 토토 사이트pgsql.extra_warnings다음으로 설정됨shadowed_variables:
메이저 토토 사이트pgsql.extra_warnings를 'shadowed_variables'로 설정;
함수 만들기 foo(f1 int)는 int를 $$로 반환합니다.
선언하다
f1 정수;
시작하다
f1을 반환합니다.
끝;
$$ 언어 plpgsql;
경고: 변수 "f1"은 이전에 정의된 변수를 숨깁니다.
라인 3: f1 int;
^
함수 생성