테이블을 반환하는 PostgreSQL 함수

Teibeul Eul Banhwanhaneun Postgresql Hamsu



때로는 결과 집합을 캡슐화하기 위해 PostgreSQL 데이터베이스에 테이블을 반환하는 함수를 생성할 수도 있습니다. 레코드를 검색하고 결과 집합을 테이블로 표시하는 반환 쿼리를 사용하는 'pgSQL' 함수를 만드는 것이 가능합니다. 이 게시물에서는 테이블을 반환하는 PostgreSQL 함수를 만드는 방법을 안내합니다.

테이블을 반환하는 PostgreSQL 함수를 만드는 방법

PostgreSQL 데이터베이스가 있고 테이블의 레코드를 확인하려는 경우 정기적으로 함수를 사용하는 것이 가장 편리한 방법입니다. 특히 결과 집합에 테이블을 반환하는 PostgreSQL 함수는 더욱 그렇습니다. 이런 방식으로 결과 집합을 캡슐화하고 이 접근 방식을 사용하면 더 나은 코드 구성에 도움이 됩니다.

다음은 테이블을 반환하는 PostgreSQL 함수를 생성하는 구문입니다.







함수 생성 또는 교체 function_name(매개변수_목록)

반환 테이블(column_list)

AS $$

BEGIN RETURN QUERY(쿼리);

끝;

$$ 언어 plpgsql

이러한 함수를 생성할 때 좋은 점은 테이블에서 단일 값을 반환하는 대신 다양한 “column_list”를 지정할 수 있다는 것입니다. 따라야 할 단계를 이해하는 데 도움이 되는 두 가지 예를 살펴보겠습니다.



예 1: 단일 입력 작업

테이블을 반환하는 함수를 생성할 때 반환 쿼리에 사용할 인수를 제공해야 합니다. 인수는 패턴이거나 특정 입력일 수 있습니다. 이 예에서는 단일 입력을 인수로 사용하는 경우를 제공합니다.



다음은 쿼리에 사용할 'student' 테이블입니다.





다음 이미지에서는 INT를 인수로 사용하는 'get_student'라는 함수를 만듭니다. RETURNS TABLE 섹션에서는 'student_id', 'student_name', 'student_faculty' 및 'current_status'의 4개 열이 있는 테이블을 반환합니다.



이러한 모든 열은 우리가 정의한 반환 쿼리에서 값을 가져옵니다. 반환 쿼리는 함수를 생성할 때 지정한 매개변수 목록을 사용하는 WHERE 문을 사용합니다.

함수를 생성하면 PostgreSQL 함수가 성공적으로 생성되었음을 확인하는 이전 출력과 유사한 출력을 얻게 됩니다. 이를 추가로 확인하려면 다음 명령을 실행하여 사용 가능한 기능을 나열하십시오.

\df *get_student();

지정된 이름을 가진 모든 함수와 일치하도록 별표를 추가합니다. 출력은 데이터베이스에 PostgreSQL 기능이 있음을 보여줍니다.

마지막 단계는 생성된 함수를 테스트하는 것입니다. 'select' 문을 실행하여 함수를 호출합니다. 그런 다음 예상 인수를 추가합니다. 우리의 경우 매개변수는 INT 유형입니다. 따라서 일치하는 레코드를 검색하고 다음과 같이 테이블을 반환하기 위해 인수로 1을 추가합니다.

예 2: 입력 패턴 작업

반환 쿼리에 사용할 값이 확실하지 않은 경우 ILIKE 연산자를 사용하여 지정된 패턴과 일치시킬 수 있습니다. 예를 들어, 이름이 있고 문자열의 일부만 알고 있는 경우 ILIKE 연산자를 사용하면 '%' 기호를 사용하여 패턴이 어떻게 될지 정의할 수 있습니다.

이 경우 다음 표를 사용하고 이름 열을 대상으로 합니다.

이전에 했던 것과 유사한 함수를 만듭니다. 그러나 매개변수 유형이 변경되었으며 반환 쿼리에서는 함수 호출 시 인수로 추가된 ILIKE 연산자를 사용합니다.

함수가 준비되면 이를 호출하여 테이블을 반환할 수 있습니다. 그것에 대해 갈 방법은 다양합니다. 예를 들어 검색 패턴의 문자열에 'Jo'가 포함되어 있으면 다음과 같이 명령 쿼리를 실행합니다.

get_details('%Jo%')에서 *를 선택합니다.

모든 값을 문자열의 'Jo'와 일치시켜 두 개의 레코드를 제공합니다.

문자열의 마지막 부분만 알고 있는 경우 쿼리를 비틀어 다음과 같이 실행합니다.

get_details('%Tyson')에서 *를 선택하세요.

마지막으로 문자열의 첫 번째 부분을 알고 있는 경우 다음과 같이 패턴 뒤에 '&' 기호를 추가합니다.

get_details('Tim%')에서 *를 선택하세요.

이는 PostgreSQL 함수를 사용하여 테이블을 반환하는 방법에 대한 다양한 예입니다.

결론

PostgreSQL은 다양한 기능을 갖춘 강력한 데이터베이스입니다. 함수를 생성할 때 캡슐화 달성을 비롯한 다양한 이유로 테이블을 결과 집합으로 반환하도록 설정할 수 있습니다. 이 게시물에서는 PostgreSQL에서 테이블을 반환하는 함수를 생성하고 사용하는 두 가지 예를 제시했습니다.