Azure Database for PostgreSQL에서 저장 프로시저 만들기

완료됨

특정 작업에 대한 저장 프로시저를 만들면 Azure for PostgreSQL 데이터베이스의 기능을 확장하는 등 많은 이점이 있습니다. 다음을 수행하려는 경우 저장 프로시저를 사용합니다.

  • 한 곳에서 복잡한 코드를 개발하고 테스트한 후 필요할 때 호출합니다.
  • 코드를 효율적으로 실행합니다. 동일한 결과를 반환하는 저장 프로시저는 미리 컴파일되고 Azure Database PostgreSQL 서버에 저장되므로 더 효율적입니다.
  • 코드를 더 읽기 쉽게 만듭니다.
  • 트랜잭션 내에 오류 처리를 포함합니다.
  • 사용자에게 복잡성을 숨깁니다.

Azure Database for PostgreSQL은 여러 프로그래밍 언어를 지원하지만, SQL은 PostgreSQL의 네이티브 언어이며 최적화 프로그램에서 가장 잘 작동합니다.

저장 프로시저는 CREATE PROCEDURE 키워드를 사용하여 만들어집니다. 또는 CREATE OR REPLACE PROCEDURE를 사용하여 새 프로시저를 만들거나 프로시저를 동일한 이름으로 바꿉니다.

특정 스키마에 프로시저를 만들 스키마 이름을 포함합니다. 그렇지 않으면 현재 스키마에서 만들어집니다. 프로시저 이름은 스키마 내에서 고유해야 하고 입력 인수 형식을 포함해야 합니다. 그러나 인수 형식이 다른 프로시저 또는 함수에 동일한 이름을 지정하여 프로시저 이름을 오버로드할 수 있습니다.

프로시저를 만드는 사용자는 프로시저의 소유자입니다. 언어도 지정해야 합니다.

프로시저는 다음 매개 변수를 사용합니다.

  • name - 필요에 따라 스키마 이름을 포함합니다.
  • argmode - 인수의 모드입니다. IN, INOUT 또는 VARIADIC일 수 있습니다. 기본값은 IN입니다. OUT은 지원되지 않습니다. 대신 INOUT을 사용합니다. VARDIADIC은 형식이 동일한 입력 인수의 정의되지 않은 수이며 마지막 입력 인수여야 합니다.
  • argname - 인수 이름입니다.
  • argtype - 인수 데이터 형식입니다.
  • default_expr - 매개 변수가 지정되지 않은 경우 사용할 기본 식(동일한 형식의 식)입니다. 기본값이 있는 매개 변수 다음의 입력 매개 변수에도 기본값이 있어야 합니다.
  • lang_name - 프로시저를 작성하는 데 사용되는 언어입니다. sql, c, internal 또는 사용자 정의 절차적 언어의 이름(예: plpgsql)일 수 있습니다.

다음 예제에서는 입력 매개 변수 a 및 b를 사용하는 myprocedure라는 저장 프로시저를 만듭니다. IN은 매개 변수의 기본값이므로 입력 매개 변수로 명시적으로 식별할 필요가 없습니다. 저장 프로시저가 호출되면 이러한 매개 변수에 할당된 값이 mytable에 삽입됩니다.

CREATE PROCEDURE myprocedure (a integer, b integer)
    LANGUAGE SQL
    AS $$
        INSERT INTO mytable VALUES (a, b);
    $$;

$$ 기호는 문자열을 시작하고 종료하는 데 사용됩니다. 작은따옴표를 사용할 수도 있지만 다른 프로그래밍 언어에서 문제가 발생할 수 있으므로 $$를 사용하는 것이 좋습니다.