2025 년 7 월 17 일 : | 윈 토토 : 윈 토토 18 베타 2
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 41.12. 토토 베이/PGSQL에서 개발을위한 팁버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

40.11. 와이즈 토토 팁와이즈 토토/pgsql

개발하는 좋은 방법와이즈 토토/pgsql는 귀하의 텍스트 편집기를 사용하는 것입니다 기능을 만들기위한 선택과 다른 창에서PSQL로드하고 테스트합니다 기능. 이렇게하면 글을 쓰는 것이 좋습니다. 사용 함수생성 또는 교체 기능. 그렇게하면 파일을 다시로드하여 업데이트 할 수 있습니다. 함수 정의. 예를 들어:

함수 생성 또는 교체 testfunc (정수) 정수를 $$로 반환합니다
          .... ....
$$ 언어 와이즈 토토pgsql;

실행 중PSQL, 가능합니다 이러한 기능 정의 파일을 다음과 같이로드하거나 다시로드하십시오.

\ i filename.sql

그런 다음 즉시 SQL 명령을 발행하여 테스트하십시오 기능.

개발하는 또 다른 좋은 방법와이즈 토토/pgsqlGUI 데이터베이스 액세스 도구가 있습니다 그것은 절차 적 언어로 발전을 촉진합니다. 한 예 그러한 도구의pgadmin, 다른 사람들은 존재하지만. 이 도구는 종종 편리합니다 단일 따옴표를 피하고 쉽게 기능을 재창조하고 디버그합니다.

40.11.1. 견적 마크 처리

A의 코드와이즈 토토/pgsql함수 에 지정됩니다.함수 만들기as 문자열 문자. 평범한 방법으로 문자열 문자를 쓰면 주변의 단일 따옴표를 사용하면 내부의 단일 인용문 기능 본문은 두 배가되어야합니다. 마찬가지로 모든 백 슬래시도 있어야합니다 두 배로 (탈출 문자열 구문이 사용되었다고 가정). 배가 인용문은입니다 최선의 지루하고 더 복잡한 경우 코드가 될 수 있습니다. 쉽게 자신을 찾을 수 있기 때문에 이해할 수 없습니다 6 개 이상의 인접한 견적 마크가 필요합니다. 권장됩니다 대신 기능 본문을 A로 씁니다"Dollar-Quoted"문자열 리터럴 (참조섹션 4.1.2.4). 달러 크기의 접근 방식에서는 결코 두 배가됩니다 인용 마크, 대신 다른 것을 선택하도록주의하십시오. 필요한 각 레벨의 중첩에 대한 달러 크기의 구분 기호. 을 위한 예를 들어, 당신은를 쓸 수 있습니다.생성 기능명령 AS :

함수 testfunc (Integer)를 $ proc $로 반환합니다
          .... ....
$ proc $ 언어 와이즈 토토pgsql;

이 내에서는 간단한 리터럴에 인용 표시를 사용할 수 있습니다. SQL 명령의 문자열 및$$DIMIMIT SQL 명령의 조각은 문자열로 조립하는 명령입니다. 만약에 포함하는 텍스트를 인용해야합니다.$$, 당신은 사용할 수 있습니다$ Q $등.

다음 차트는 견적을 쓸 때해야 할 일을 보여줍니다. 달러 견적이없는 마크. 번역 할 때 유용 할 수 있습니다 더 이해하기 쉬운 것으로 인용 된 코드.

1 인용 표시

함수 본문을 시작하고 끝내려면 :

함수 만들기 foo ()는 정수를 반환합니다.
          .... ....
'언어 plpgsql;

단일 인용 기능 본문 내의 어느 곳에서나 견적 마크필수쌍으로 나타납니다.

2 인용 표시

함수 본문 내부의 문자열 리터럴의 경우 :

a_output : = ''blah '';
f_name = ''foobar ''; 사용자 중에서 *를 선택하십시오.

달러 크기의 접근 방식에서는 다음과 같이 씁니다.

a_output : = 'blah';
f_name = 'foobar'; 사용자 중에서 *를 선택하십시오.

정확히와이즈 토토/pgsql파서는 어느 경우에도 볼 수 있습니다.

4 인용 표시

문자열 상수에 단일 따옴표가 필요한 경우 기능 본문 내부 (예 :

a_output : = a_output || ``그리고``foobar '' ''and xyz ''와 같은 이름.

실제로 값이 추가되었습니다a_output:그리고 'foobar'와 같은 이름 및 xyz.

달러 크기의 접근 방식에서는 다음과 같이 씁니다.

a_output : = a_output || $$ 및 'foobar'및 xyz $$와 같은 이름

이 주변의 1 달러짜리 구분 기호가주의를 기울이고 있습니다 단지$$.

6 인용 표시

함수 내부 문자열의 단일 따옴표 표시가있을 때 몸체는 그 줄의 끝에 인접 해 있습니다. 예:

a_output : = a_output || ``그리고``foobar '' '' ''과 같은 이름

값이 부가a_output그런 다음 :그리고 'foobar'와 같은 이름.

달러 크기의 접근 방식에서 이것은 다음과 같습니다.

a_output : = a_output || $$ 및 'foobar'$$와 같은 이름
10 인용 표시

문자열 상수에서 두 개의 단일 따옴표 마크를 원할 때 (8 인용 점수를 차지하는) 그리고 이것은 인접 해 있습니다. 그 문자열의 끝 상수 (2). 당신은 아마만 필요할 것입니다 다른 기능을 생성하는 함수를 작성하는 경우 에서와 같이예제 40-9. 예를 들어:

a_output : = a_output || ''v_ ''||
    referrer_keys.kind || '' 좋다 ''''''''''
    || referrer_keys.key_string || '' '' '' '' '' '' '
    그런 다음`` '' '' '||를 반환하십시오 referrer_keys.referrer_type
    || '' '' '';; 끝 If; '';

a_output그럼 BE:

if v _... kake ''... ''```` '...' '; 끝 If;

달러 크기의 접근 방식에서 이것은 다음과 같습니다.

a_output : = a_output || V _ $$ || 인 경우 $$ referrer_keys.kind || $$와 같은 '$$
    || referrer_keys.key_string || $$ '
    그런 다음 '$$ ||를 반환하십시오 referrer_keys.referrer_type
    || $$ '; 끝 If; $$;

우리가 단일 견적 자국을 넣어야한다고 가정합니다.a_output는 재확인되기 때문에 사용하기 전에.