토토 사이트 추천 기능에서 데이터베이스 자체에 접근할 수 있습니다.
함수를 통해 수행됨spi_exec_query아래에 설명되어 있거나
실험 모듈DBD::PgSPI(다음에서도 사용 가능CPAN 미러 사이트).
이 모듈은 다음을 제공합니다.DBI호환 데이터베이스 핸들 이름이 지정됨$pg_dbh수행하는 데 사용할 수 있는
일반 쿼리DBI구문.
PL/토토 사이트 추천은 세 가지 추가 토토 사이트 추천 명령을 제공합니다:
spi_exec_query(질의 [, 최대 행])spi_exec_query(명령)spi_query(명령)spi_fetchrow(명령)spi_exec_querySQL을 실행합니다 명령을 실행하고 전체 행 세트를 참조로 반환합니다. 해시 참조 배열입니다.당신은 이 명령만 사용해야 합니다 결과 세트가 상대적으로 작다.다음은 쿼리의 예입니다(선택명령)(선택적 최대값 포함) 행 수:
$rv = spi_exec_query('SELECT * FROM my_table', 5);
이것은 테이블에서 최대 5개의 행을 반환합니다.내_테이블. 만일내_테이블열이 있습니다내_열, 행에서 해당 값을 얻을 수 있습니다.$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_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)에서 * 선택;
elog(레벨,
msg)로그 또는 오류 메시지를 내보냅니다. 가능한 수준은 다음과 같습니다.디버그, 로그, 정보, 공지, 경고및오류. 오류오류 조건을 발생시킵니다. 이것이 주변 Perl 코드에 의해 트랩되지 않으면 오류가 호출 쿼리로 전파되어 현재 트랜잭션 또는 하위 트랜잭션이 중단됩니다. 이 사실상 Perl과 동일합니다.죽어라명령. 다른 레벨에서는 생성만 생성됩니다. 다양한 우선순위 수준의 메시지. 메시지 여부 특정 우선순위가 고객에게 보고되고 서면으로 작성됩니다. 서버 로그에 저장하거나 둘 다에 의해 제어됩니다.log_min_messages그리고client_min_messages구성 변수. 참조17장더 보기 정보.