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

42.3. 내장 토토 사이트 추천

42.3.1. PL/Perl에서 데이터베이스 액세스

Perl 기능에서 데이터베이스 자체에 접근하는 것은 다음과 같습니다. 다음 기능을 통해 수행됩니다.

spi_exec_query(질의 [, 최대 행])

spi_exec_querySQL 명령을 실행합니다 해시 배열에 대한 참조로 전체 행 세트를 토토 사이트 추천합니다. 참조.당신은 다음만을 사용해야 합니다 결과 세트가 상대적으로 작다.다음은 쿼리의 예입니다(선택명령)을 선택적인 최대 개수로 행:

$rv = spi_exec_query('SELECT * FROM my_table', 5);

이것은 테이블에서 최대 5개의 행을 토토 사이트 추천합니다.내_테이블. 만일내_테이블이 있습니다 열my_column, 그 값을 얻을 수 있습니다 행에서$i결과는 다음과 같습니다.

$foo = $rv-행[$i]-my_column;

a에서 토토 사이트 추천된 총 행 수선택쿼리는 다음과 같이 액세스할 수 있습니다:

$nrows = $rv-처리됨

다음은 다른 명령 유형을 사용하는 예입니다.

$query = "my_table 값에 삽입(1, 'test')";
$rv = spi_exec_query($query);

그런 다음 명령 상태에 액세스할 수 있습니다(예:SPI_OK_INSERT) 다음과 같습니다:

$res = $rv-상태;

영향을 받은 행 수를 얻으려면 다음을 수행하십시오:

$nrows = $rv-처리됨;

다음은 완전한 예입니다:

CREATE TABLE 테스트(
    나는 int,
    v varchar
);

INSERT INTO test (i, v) VALUES (1, '첫 번째 줄');
INSERT INTO test (i, v) VALUES (2, '두 번째 줄');
INSERT INTO test (i, v) VALUES (3, '세 번째 줄');
INSERT INTO 테스트(i, v) VALUES(4, '불멸');

함수 생성 또는 교체 test_munge()는 SETOF 테스트를 $$로 토토 사이트 추천합니다.
    my $rv = spi_exec_query('테스트에서 i, v 선택;');
    내 $status = $rv-상태;
    내 $nrows = $rv-처리됨;
    foreach 내 $rn (0 .. $nrows - 1) 
        내 $row = $rv-행[$rn];
        $row-i += 정의된 경우 200($row-i);
        $row-v =~ tr/A-Za-z/a-zA-Z/ if (defined($row-v));
        return_next($행);

    undef를 토토 사이트 추천;
$$ 언어 plperl;

SELECT * FROM test_munge();
spi_query(명령)
spi_fetchrow(커서)
spi_cursor_close(커서)

spi_query그리고spi_fetchrow행 세트에 대해 쌍으로 함께 작업 클 수도 있고 행을 다음과 같이 토토 사이트 추천하려는 경우 도착했어.spi_fetchrow작동spi_query. 다음 예에서는 함께 사용하세요:

CREATE TYPE foo_type AS (the_num INTEGER, the_text TEXT);

함수 만들기 또는 바꾸기 lota_md5(INTEGER)는 SETOF foo_type을 $$로 토토 사이트 추천합니다.
    Digest::MD5 qw(md5_hex)를 사용하십시오.
    내 $file = '/usr/share/dict/words';
    내 $t = 현지 시간;
    elog(NOTICE, "$t에서 $file 파일 열기" );
    open my $fh, '<', $file # 오, 파일 접근이군요!
        또는 elog(ERROR, "읽기 위해 $file을 열 수 없습니다: $!");
    내 @words = <$fh;
    $fh 닫기;
    $t = 현지시간;
    elog(NOTICE, "$t에서 $file 파일을 닫았습니다.");
    씹어먹다(@words);
    내 $행;
    my $sth = spi_query("SELECT * FROM generate_series(1,$_[0]) AS b(a)");
    while (정의됨 ($row = spi_fetchrow($sth))) 
        return_next(
            the_num = $행-a,
            the_text = md5_hex($words[rand @words])
        );

    반품;
$$ 언어 plperlu;

lotsa_md5(500)에서 * 선택;

일반적으로,spi_fetchrow이어야 합니다 돌아올 때까지 반복됨undef, 더 이상 읽을 행이 없음을 나타냅니다. 커서가 토토 사이트 추천되었습니다. 으로spi_query다음 경우에 자동으로 해제됩니다.spi_fetchrow토토 사이트 추천undef. 모든 행을 읽고 싶지 않은 경우, 대신 전화하세요spi_cursor_close무료로 커서. 그렇지 않으면 메모리 누수가 발생합니다.

spi_prepare(명령, 인수 유형)
spi_query_prepared(계획, 인수)
spi_exec_prepared(계획 [, 속성], 인수)
spi_freeplan(계획)

spi_prepare, spi_query_prepared, spi_exec_preparedspi_freeplan동일한 토토 사이트 추천을 구현하지만 준비된 쿼리를 위해.spi_prepare수락 번호가 매겨진 인수 자리 표시자($1, $2 등)가 있는 쿼리 문자열 인수 유형의 문자열 목록:

$plan = spi_prepare('SELECT * FROM test WHERE id  $1 AND name = $2',
                                                     'INTEGER', 'TEXT');

다음 호출을 통해 쿼리 계획이 준비되면spi_prepare, 계획 대신 사용할 수 있습니다. 문자열 쿼리(spi_exec_prepared, 결과는 다음에서 토토 사이트 추천된 것과 동일합니다.spi_exec_query또는spi_query_prepared이것은 정확히 다음과 같이 커서를 토토 사이트 추천합니다.spi_query합니다. 나중에 전달될 수 있습니다. 에spi_fetchrow. 선택적 두 번째 매개변수spi_exec_prepared해시입니다 속성 참조; 현재 지원되는 유일한 속성은한계, 최대 개수를 설정합니다. 쿼리에서 토토 사이트 추천된 행입니다.

준비된 쿼리의 장점은 다음을 사용할 수 있다는 것입니다. 둘 이상의 쿼리 실행을 위해 준비된 하나의 계획. 계획 이후 더 이상 필요하지 않으며 다음을 사용하여 해제할 수 있습니다.spi_freeplan:

함수 생성 또는 교체 init()가 $$로 VOID를 토토 사이트 추천합니다.
        $_SHAREDmy_plan = spi_prepare('SELECT (now() + $1)::date AS now',
                                        '간격');
$$ 언어 plperl;

함수 생성 또는 교체 add_time( INTERVAL )은 텍스트를 $$로 토토 사이트 추천합니다.
        spi_exec_prepared를 토토 사이트 추천(
                $_SHARED내_계획,
                $_[0]
        )-행-[0]-지금;
$$ 언어 plperl;

함수 만들기 또는 바꾸기 done()은 $$로 VOID를 토토 사이트 추천합니다.
        spi_freeplan( $_SHAREDmy_plan);
        undef $_SHAREDmy_plan;
$$ 언어 plperl;

선택 초기화();
SELECT add_time('1일'), add_time('2일'), add_time('3일');
선택 완료();

  추가_시간 |  추가_시간 |  add_time
------------+------------+------------
 2005-12-10 | 2005-12-11 | 2005-12-12

다음의 매개변수 아래 첨자에 유의하세요.spi_prepare은 $1, $2, $3 등을 통해 정의되므로 피하세요. 쿼리 문자열을 큰따옴표로 선언하면 쉽게 발생할 수 있습니다. 잡기 어려운 버그.

또 다른 예는 다음에서 선택적 매개변수의 사용을 보여줍니다.spi_exec_prepared:

CREATE TABLE 호스트 AS SELECT id, ('192.168.1.'||id)::inet AS 주소
                      FROM generate_series(1,3) AS id;

함수 생성 또는 교체 init_hosts_query()는 VOID를 $$로 토토 사이트 추천합니다.
        $_SHARED계획 = spi_prepare('SELECT * FROM 호스트
                                      WHERE 주소 << $1', 'inet');
$$ 언어 plperl;

생성 또는 교체 기능 query_hosts(inet) SETOF 호스트를 $$로 토토 사이트 추천합니다.
        spi_exec_prepared를 토토 사이트 추천(
                $_SHARED계획,
                한도 = 2,
                $_[0]
        )-행;
$$ 언어 plperl;

함수 생성 또는 교체 release_hosts_query()는 VOID를 $$로 토토 사이트 추천합니다.
        spi_freeplan($_SHARED계획);
        undef $_SHARED계획;
$$ 언어 plperl;

SELECT init_hosts_query();
SELECT 쿼리_호스트('192.168.1.0/30');
SELECT release_hosts_query();

    쿼리_호스트    
-----------------
 (1,192.168.1.1)
 (2,192.168.1.2)
(2행)

42.3.2. 유틸리티 토토 사이트 추천 PL/펄

elog(레벨, msg)

로그 또는 오류 메시지를 내보냅니다. 가능한 수준은 다음과 같습니다.디버그, 로그, 정보, 공지, 경고오류. 오류오류 조건을 발생시킵니다. 만약 이것이 주변 Perl 코드에 의해 트랩되지 않으면 오류가 전파됩니다. 호출 쿼리로 이동하여 현재 트랜잭션을 유발하거나 하위 트랜잭션이 중단됩니다. 이는 사실상 다음과 동일합니다. 펄죽음명령. 다른 레벨만 다양한 우선순위 수준의 메시지를 생성합니다. 메시지 여부 특정 우선순위가 클라이언트에 보고되고 서버 로그 또는 둘 다에 의해 제어됩니다.log_min_messages그리고client_min_messages구성 변수. 참조범퍼카 토토 : 문서 : 9.3 : 서버 구성더 많은 정보를 원하시면.

quote_literal(문자열)

문자열로 사용되도록 적절하게 인용된 주어진 문자열을 토토 사이트 추천합니다. SQL 문 문자열의 리터럴입니다. 삽입된 작은따옴표 및 백슬래시는 올바르게 두 배가 됩니다. 참고하세요quote_literalundef 입력에 대해 undef를 토토 사이트 추천합니다. 만약에 인수가 정의되지 않았을 수 있습니다.quote_nullable종종 더 적합합니다.

quote_nullable(문자열)

주어진 문자열을 적절하게 인용하여 문자열로 사용하도록 토토 사이트 추천합니다. SQL 문 문자열의 리터럴입니다. 또는 인수가 undef인 경우 따옴표가 없는 문자열 "NULL"을 토토 사이트 추천합니다. 삽입된 작은따옴표 및 백슬래시는 올바르게 두 배가 됩니다.

quote_ident(문자열)

적절하게 인용된 주어진 문자열을 토토 사이트 추천하여 SQL 문 문자열의 식별자입니다. 따옴표는 다음 경우에만 추가됩니다. 필요(예: 문자열에 식별자가 아닌 문자가 포함된 경우) 또는 케이스가 접혀 있을 수 있습니다). 삽입된 따옴표는 적절하게 두 배로 표시됩니다.

decode_bytea(문자열)

다음의 내용으로 표시되는 이스케이프되지 않은 바이너리 데이터를 토토 사이트 추천합니다. 주어진 문자열은 다음과 같아야 합니다.바이테아인코딩되었습니다.

encode_bytea(문자열)

토토 사이트 추천바이테아인코딩된 형식의 주어진 문자열의 이진 데이터 내용입니다.

encode_array_literal(배열)
encode_array_literal(배열, 구분자)

참조된 배열의 내용을 문자열로 토토 사이트 추천합니다. 배열 리터럴 형식(참조섹션 8.15.2). 다음을 토토 사이트 추천합니다. 배열에 대한 참조가 아닌 경우 인수 값은 변경되지 않습니다. 는 배열 리터럴 요소 사이에 사용되는 구분 기호의 기본값은 다음과 같습니다. "," 구분 기호가 지정되지 않았거나 지정된 경우 정의되지 않음

encode_typed_literal(, 유형 이름)

Perl 변수를 다음과 같이 전달된 데이터 유형의 값으로 변환합니다. 두 번째 인수를 입력하고 이에 대한 문자열 표현을 토토 사이트 추천합니다. 가치. 중첩된 배열과 복합 값을 올바르게 처리합니다. 유형.

encode_array_constructor(배열)

참조된 배열의 내용을 문자열로 토토 사이트 추천합니다. 배열 생성자 형식(참조섹션 4.2.12). 개별 값은 다음을 사용하여 인용됩니다.quote_nullable. 인수 값을 토토 사이트 추천합니다. 다음을 사용하여 인용됨quote_nullable만약 그렇다면 배열에 대한 참조가 아닙니다.

looks_like_number(문자열)

주어진 문자열의 내용이 다음과 같으면 참값을 토토 사이트 추천합니다. Perl에 따르면 숫자와 같은 경우 그렇지 않으면 false를 토토 사이트 추천합니다. 반품 인수가 undef인 경우 undef입니다. 선행 및 후행 공백은 다음과 같습니다. 무시됩니다.정보그리고무한대숫자로 간주됩니다.

is_array_ref(인수)

주어진 인수가 다음과 같이 처리될 수 있는 경우 참값을 토토 사이트 추천합니다. 배열 참조, 즉 인수의 참조가 다음과 같은 경우어레이또는토토 사이트 추천::InServer::ARRAY. 거짓을 토토 사이트 추천합니다. 그렇지 않으면.