PostgreSQL 함수에서 SELECT 쿼리 결과 반환
PostgreSQL에서 함수를 사용하여 SELECT 쿼리 결과를 반환하려면 적절한 구문과 반환 유형을 이해해야 합니다. 제공된 기능 중 하나를 검사하고 쿼리 결과를 올바르게 검색하는 방법을 안내해 드리겠습니다.
문제의 함수 wordFrequency
에는 현재 올바른 반환 문이 없습니다. 이 문제를 해결하기 위해 RETURN QUERY
구문을 사용합니다.
수정된 기능:
<code class="language-sql">CREATE OR REPLACE FUNCTION wordFrequency(_max_tokens integer) RETURNS SETOF RECORD AS $$ BEGIN RETURN QUERY SELECT text, count(*), 100.0 / _max_tokens * count(*) AS ratio FROM ( SELECT text FROM token WHERE chartype = 'ALPHABETIC' LIMIT _max_tokens ) AS tokens GROUP BY text ORDER BY count DESC; END; $$ LANGUAGE plpgsql;</code>
핵심사항:
RETURN QUERY
구문을 사용하면 SELECT 쿼리 결과를 직접 반환할 수 있습니다. SETOF RECORD
은 함수가 일련의 레코드를 반환함을 나타냅니다. text
및 count(*)
)는 쿼리의 열 이름과 일치해야 합니다. 세 번째 열에 명확한 이름을 부여하고 모호성을 피하기 위해 AS ratio
을 추가했습니다. 동시에 정수 나누기로 인한 정밀도 손실을 방지하려면 100
을 100.0
으로 변경하세요. 통화 기능:
<code class="language-sql">SELECT * FROM wordFrequency(123);</code>
또한 RETURNS TABLE
을 사용하여 반환 유형을 명시적으로 정의하면 모든 함수 호출에 대해 열 정의 목록을 지정할 필요가 없으므로 일반 레코드를 반환하는 것보다 더 실용적입니다. 예:
<code class="language-sql">CREATE OR REPLACE FUNCTION wordFrequency(_max_tokens integer) RETURNS TABLE (text TEXT, cnt BIGINT, ratio NUMERIC) AS $$ BEGIN RETURN QUERY SELECT text, count(*), 100.0 / _max_tokens * count(*) FROM ( SELECT text FROM token WHERE chartype = 'ALPHABETIC' LIMIT _max_tokens ) AS tokens GROUP BY text ORDER BY count DESC; END; $$ LANGUAGE plpgsql;</code>
중요 사항:
이러한 단계를 따르면 PostgreSQL의 함수를 효율적으로 사용하여 SELECT 쿼리 결과를 반환할 수 있습니다.
위 내용은 PostgreSQL 함수에서 SELECT 쿼리 결과를 올바르게 반환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!