PostgreSQL-함수

PostgreSQL functions저장 프로 시저라고도하는을 사용하면 일반적으로 데이터베이스 내의 단일 함수에서 여러 쿼리와 왕복을 수행하는 작업을 수행 할 수 있습니다. 다른 애플리케이션이 중간 계층 또는 복제 코드 대신 저장 프로 시저와 직접 상호 작용할 수 있으므로 함수를 사용하면 데이터베이스를 재사용 할 수 있습니다.

SQL, PL / pgSQL, C, Python 등 원하는 언어로 함수를 생성 할 수 있습니다.

통사론

함수를 생성하는 기본 구문은 다음과 같습니다.

CREATE [OR REPLACE] FUNCTION function_name (arguments) 
RETURNS return_datatype AS $variable_name$
   DECLARE
      declaration;
      [...]
   BEGIN
      < function_body >
      [...]
      RETURN { variable_name | value }
   END; LANGUAGE plpgsql;

어디,

  • function-name 함수의 이름을 지정합니다.

  • [OR REPLACE] 옵션을 사용하면 기존 기능을 수정할 수 있습니다.

  • 함수에는 return 성명서.

  • RETURN절은 함수에서 반환 할 데이터 유형을 지정합니다. 그만큼return_datatype 기본, 복합 또는 도메인 유형이거나 테이블 열의 유형을 참조 할 수 있습니다.

  • function-body 실행 가능한 부분을 포함합니다.

  • AS 키워드는 독립형 함수를 만드는 데 사용됩니다.

  • plpgsql함수가 구현 된 언어의 이름입니다. 여기서는 PostgreSQL에이 옵션을 사용합니다.이 옵션은 SQL, C, 내부 또는 사용자 정의 절차 언어의 이름 일 수 있습니다. 이전 버전과의 호환성을 위해 이름을 작은 따옴표로 묶을 수 있습니다.

다음 예제는 독립형 함수 생성 및 호출을 보여줍니다. 이 함수는 COMPANY 테이블의 총 레코드 수를 반환합니다. 다음 레코드가있는 COMPANY 테이블 을 사용합니다.

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

totalRecords () 함수는 다음과 같습니다.

CREATE OR REPLACE FUNCTION totalRecords ()
RETURNS integer AS $total$
declare
	total integer;
BEGIN
   SELECT count(*) into total FROM COMPANY;
   RETURN total;
END;
$total$ LANGUAGE plpgsql;

위의 쿼리가 실행되면 결과는 다음과 같습니다.

testdb# CREATE FUNCTION

이제이 함수에 대한 호출을 실행하고 COMPANY 테이블의 레코드를 확인하겠습니다.

testdb=# select totalRecords();

위의 쿼리가 실행되면 결과는 다음과 같습니다.

totalrecords
--------------
      7
(1 row)