토토 사이트 추천 기능에서 데이터베이스 자체에 대한 액세스
함수를 통해 완료SPI_EXEC_QUERY
아래 설명 또는 an
실험 모듈dbd :: pgspi(또한 이용 가능CPAN 미러 사이트).
이 모듈은 a를 사용할 수있게합니다.DBI-Compliant Database Handle name$ pg_dbh수행하는 데 사용할 수 있습니다
정상적인 쿼리DBI구문.
pl/토토 사이트 추천은 세 가지 추가 토토 사이트 추천 명령을 제공합니다.
SPI_EXEC_QUERY
(쿼리[,Max-Rows])SPI_EXEC_QUERY
(명령)SPI_QUERY
(명령)spi_fetchrow
(명령)SPI_EXEC_QUERYSQL을 실행합니다 명령 및 전체 행을에 대한 참조로 반환합니다. 해시 참조 배열.이 명령 만 사용해야합니다 결과 세트가 비교적 작은.다음은 쿼리의 예입니다 (select명령) 선택 사항 최대 값 행 수 :
$ rv = spi_exec_query ( 'select * from my_table', 5);
테이블에서 최대 5 행을 반환my_table. 만약에my_table열이 있습니다my_column, 당신은 그 값을 행에서 얻을 수 있습니다$ i다음과 같은 결과의 :
$ foo = $ rv- rows [$ i]- my_column;
A에서 반환 된 총 행 수select다음과 같이 쿼리에 액세스 할 수 있습니다.
$ nrows = $ rv- processed
다음은 다른 명령 유형을 사용하는 예입니다.
$ query = "my_table 값에 삽입 (1, 'test')"; $ rv = spi_exec_query ($ query);
그런 다음 명령 상태에 액세스 할 수 있습니다 (예 :SPI_OK_INSERT) :
$ res = $ rv- status;
영향을받는 행의 수를 얻으려면 :
$ nrows = $ rv- processed;
여기에 완전한 예가 있습니다 :
테이블 테스트 생성 ( 나는 int, v varchar ); 테스트에 삽입 (i, v) 값 (1, 'First Line'); 테스트에 삽입 (i, v) 값 (2, '두 번째 줄'); 테스트에 삽입 (i, v) 값 (3, '세 번째 줄'); 테스트에 삽입 (i, v) 값 (4, '불멸'); 함수 생성 또는 교체 test_munge () setof test를 $$로 반환합니다. my $ rv = spi_exec_query ( 'select i, v test;'); 내 $ 상태 = $ rv- status; my $ nrows = $ rv- proceded; foreach my $ rn (0 .. $ nrows -1) 내 $ row = $ rv- rows [$ rn]; 정의 된 경우 $ row- i += 200 ($ row- i); $ row- v = ~ tr/a-za-z/a-za-z/if (정의 ($ row- v)); return_next ($ 행); Undef를 반환하십시오. $$ 언어 plperl; 선택 *에서 test_munge ();에서 선택하십시오.
SPI_QUERYandspi_fetchrow행의 쌍으로 함께 작업하십시오 클 수있는 세트 또는 원하는 경우 그들이 도착하면 줄을 반환합니다.spi_fetchrowWorks전용withSPI_QUERY. 다음 예는 보여줍니다 함께 사용하는 방법 :
foo_type 타입 생성 (the_num integer, the_text 텍스트); 함수 생성 또는 교체 lota_md5 (정수) foo_type를 $$로 설정합니다. 다이제스트 사용 :: MD5 QW (MD5_HEX); 내 $ file = '/usr/share/dict/words'; 내 $ t = localtime; elog (통지, "$ t에서 $ 파일 열기"); 내 $ fh, '<', $ 파일 # ooh, 파일 액세스 권한입니다! 또는 elog (오류, "읽기를 위해 $ 파일을 열 수 없습니다 : $!"); 내 @words = <$ fh; 닫기 $ FH; $ t = LocalTime; elog (통지, "닫힌 파일 $ 파일 at $ t"); chomp (@words); 내 $ 행; my $ sh = spi_query ( "select * from generate_series (1, $ _ [0])로 b (a)"); while (정의 ($ row = spi_fetchrow ($ sth))) return_next ( the_num = $ row- a, the_text = md5_Hex ($ word [rand @words]) ); 반품; $$ 언어 plperlu; lota_md5 (500)에서 *를 선택하십시오.
elog
(레벨,
msg)로그 또는 오류 메시지를 방출합니다. 가능한 레벨은디버그, log, info, 통지, 경고및오류. 오류오류 조건을 제기합니다. 이것이 주변 Perl 코드에 의해 갇히지 않으면 오류는 호출 쿼리로 전파되어 현재 트랜잭션 또는 삭제 될 수 있습니다. 이것 사실상 perl과 동일합니다다이명령. 다른 수준은 생성됩니다 우선 순위가 다른 메시지. 메시지 여부 특정 우선 순위는 고객에게보고됩니다 서버 로그에 또는 둘 다에 의해 제어됩니다.log_min_messagesandclient_min_messages구성 변수. 보다17 장더 많은 정보.