다음을 통해 공유


프로시저 생성

중요합니다

이 기능은 공개 미리보기 단계에 있습니다.

적용 대상:예 Databricks SQL Databricks Runtime 17.0 이상 예 Unity 카탈로그 전용

Unity 카탈로그에서 인수를 사용하거나 수정하고, SQL 문 집합을 실행하고, 선택적으로 결과 집합을 반환하는 프로시저를 만듭니다.

위치 매개 변수 호출 외에도 명명된 매개 변수 호출을 사용하여 프로시저를 호출할 수도 있습니다.

문법

CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS]
    procedure_name ( [ procedure_parameter [, ...] ] )
    [ characteristic [...] ]
    AS compound_statement

procedure_parameter
    [ IN | OUT | INOUT ] parameter_name data_type
    [ DEFAULT default_expression ] [ COMMENT parameter_comment ]

characteristic
  { LANGUAGE SQL |
    SQL SECURITY INVOKER |
    NOT DETERMINISTIC |
    COMMENT procedure_comment |
    DEFAULT COLLATION UTF8_BINARY |
    MODIFIES SQL DATA }

매개 변수

  • 또는 교체

    지정한 경우 이름이 같은 프로시저가 바뀝다. 기존 함수는 프로시저로 바꿀 수 없습니다. 이 매개 변수는 IF NOT EXISTS와 함께 지정할 수 없습니다.

  • 존재하지 않을 경우

    지정한 경우 해당 메모가 있는 프로시저가 아직 없는 경우에만 프로시저를 만듭니다. 동일한 이름의 프로시저가 존재하면 명령문은 무시됩니다. 이 매개 변수는 OR REPLACE와 함께 지정할 수 없습니다.

  • procedure_name

    프로시저의 이름입니다. 필요에 따라 프로시저 이름을 스키마 이름으로 한정할 수 있습니다. 이름이 정규화되지 않은 경우 영구 프로시저가 현재 스키마에 만들어집니다.

    프로시저 이름은 스키마의 모든 루틴(프로시저 및 함수)에 대해 고유해야 합니다.

  • procedure_parameter

    프로시저의 매개 변수를 지정합니다.

    • parameter_name

      매개 변수 이름은 프로시저 내에서 고유해야 합니다.

    • IN, INOUT 또는 OUT

      필요에 따라 매개 변수의 모드를 설명합니다.

      • 입력 전용 매개 변수를 정의합니다. 기본값입니다.

      • INOUT

        입력 출력 인수를 허용하는 매개 변수를 정의합니다. 처리되지 않은 오류 없이 프로시저가 완료되면 최종 매개 변수 값을 출력으로 반환합니다.

      • 아웃

        출력 매개 변수를 정의합니다. 매개 변수가 초기화 NULL 되고 처리되지 않은 오류 없이 프로시저가 완료되면 최종 매개 변수 값을 출력으로 반환합니다.

    • 데이터_유형

      지원되는 모든 데이터 형식입니다.

    • 기본 default_expression

      함수 호출에서 매개 변수에 인수를 할당하지 않을 때 사용할 선택적 기본값입니다. default_expression형으로 변환 가능해야 합니다 data_type. 식은 다른 매개 변수를 참조하거나 하위 쿼리를 포함해서는 안됩니다.

      하나의 매개 변수에 대해 기본값을 지정하면 다음 매개 변수 모두 기본값도 있어야 합니다.

      DEFAULTOUT 매개 변수에 대해 지원되지 않습니다.

    • COMMENT COMMENT

      매개 변수에 대한 선택적 설명입니다. commentSTRING 리터럴로 있어야 합니다.

  • 복합 문장

    SQL 프로시저의 정의가 있는 SQL 복합 문(BEGIN ... END)입니다.

    프로시저가 만들어지면 구문 정확성의 유효성이 검사됩니다. 프로시저 본문은 프로시저가 호출될 때까지 의미 체계 정확성에 대한 유효성을 검사하지 않습니다.

  • 특징

    특성 및 필수 요소 SQL SECURITY INVOKER 입니다 LANGUAGE SQL . 다른 모든 항목은 선택 사항입니다. 원하는 순서로 원하는 수의 특성을 지정할 수 있지만 각 절을 한 번만 지정할 수 있습니다.

    • LANGUAGE SQL

      함수 구현의 언어입니다.

    • SQL 보안 호출자

      프로시저 본문에 있는 모든 SQL 문이 프로시저를 호출하는 사용자의 권한에 따라 실행되도록 지정합니다.

      프로시저 본문 내에서 관계 및 루틴을 확인할 때 Azure Databricks는 호출 시 현재 카탈로그와 현재 스키마를 사용합니다.

    • 결정적이지 않음

      프로시저는 비결정적인 것으로 간주됩니다. 즉, 동일한 인수를 사용하여 호출되는 경우에도 각 호출에서 서로 다른 결과를 반환할 수 있습니다.

    • 주석 procedure_comment

      프로시저에 대한 주석입니다. procedure_comment은 리터럴이어야 합니다STRING. 기본값은 NULL입니다.

    • 기본 데이터 정렬 UTF8_BINARY

      적용 대상:yes Databricks SQL 확인 표시 예 Databricks Runtime 17.1 이상으로 표시

      프로시저의 기본 정렬 규칙을 UTF8_BINARY으로 강제 적용합니다. 프로시저가 만들어지는 스키마에 .가 아닌 UTF8_BINARY기본 데이터 정렬이 있는 경우 이 절은 필수입니다. 프로시저의 기본 데이터 정렬은 프로시저 매개 변수의 기본 데이터 정렬 및 프로시저 본문의 모든 문자열 리터럴 및 지역 변수에 대한 기본 데이터 정렬로 사용됩니다.

    • SQL 데이터 수정

      프로시저는 SQL 데이터를 수정하는 것으로 간주됩니다.

예시

-- Demonstrate INOUT and OUT parameter usage.
> CREATE OR REPLACE PROCEDURE add(x INT, y INT, OUT sum INT, INOUT total INT)
    LANGUAGE SQL
    SQL SECURITY INVOKER
    COMMENT 'Add two numbers'
    AS BEGIN
        SET sum = x + y;
        SET total = total + sum;
    END;
> DECLARE sum INT;
> DECLARE total INT DEFAULT 0;
> CALL add(1, 2, sum, total);
> SELECT sum, total;
 3 3
> CALL add(3, 4, sum, total);
 7 10

-- The last executed query is the result set of a procedure
> CREATE PROCEDURE greeting(IN mode STRING COMMENT 'informal or formal')
    LANGUAGE SQL
    SQL SECURITY INVOKER
    AS BEGIN
        SELECT 'Hello!';
        CASE mode WHEN 'informal' THEN SELECT 'Hi!';
                  WHEN 'formal' THEN SELECT 'Pleased to meet you.';
        END CASE;
    END;
> CALL greeting('informal');
  Hi!

> CALL greeting('formal');
  Pleased to meet you.

> CALL greeting('casual');
  Hello!