중요합니다
이 기능은 공개 미리보기 단계에 있습니다.
적용 대상:
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_parameter
프로시저의 매개 변수를 지정합니다.
-
매개 변수 이름은 프로시저 내에서 고유해야 합니다.
IN, INOUT 또는 OUT
필요에 따라 매개 변수의 모드를 설명합니다.
안
입력 전용 매개 변수를 정의합니다. 기본값입니다.
INOUT
입력 출력 인수를 허용하는 매개 변수를 정의합니다. 처리되지 않은 오류 없이 프로시저가 완료되면 최종 매개 변수 값을 출력으로 반환합니다.
아웃
출력 매개 변수를 정의합니다. 매개 변수가 초기화
NULL되고 처리되지 않은 오류 없이 프로시저가 완료되면 최종 매개 변수 값을 출력으로 반환합니다.
-
지원되는 모든 데이터 형식입니다.
-
함수 호출에서 매개 변수에 인수를 할당하지 않을 때 사용할 선택적 기본값입니다.
default_expression은 형으로 변환 가능해야 합니다data_type. 식은 다른 매개 변수를 참조하거나 하위 쿼리를 포함해서는 안됩니다.하나의 매개 변수에 대해 기본값을 지정하면 다음 매개 변수 모두 기본값도 있어야 합니다.
DEFAULT는OUT매개 변수에 대해 지원되지 않습니다. COMMENT COMMENT
매개 변수에 대한 선택적 설명입니다.
comment는STRING리터럴로 있어야 합니다.
-
-
SQL 프로시저의 정의가 있는 SQL 복합 문(
BEGIN ... END)입니다.프로시저가 만들어지면 구문 정확성의 유효성이 검사됩니다. 프로시저 본문은 프로시저가 호출될 때까지 의미 체계 정확성에 대한 유효성을 검사하지 않습니다.
특징
특성 및 필수 요소
SQL SECURITY INVOKER입니다LANGUAGE SQL. 다른 모든 항목은 선택 사항입니다. 원하는 순서로 원하는 수의 특성을 지정할 수 있지만 각 절을 한 번만 지정할 수 있습니다.LANGUAGE SQL
함수 구현의 언어입니다.
SQL 보안 호출자
프로시저 본문에 있는 모든 SQL 문이 프로시저를 호출하는 사용자의 권한에 따라 실행되도록 지정합니다.
프로시저 본문 내에서 관계 및 루틴을 확인할 때 Azure Databricks는 호출 시 현재 카탈로그와 현재 스키마를 사용합니다.
결정적이지 않음
프로시저는 비결정적인 것으로 간주됩니다. 즉, 동일한 인수를 사용하여 호출되는 경우에도 각 호출에서 서로 다른 결과를 반환할 수 있습니다.
주석 procedure_comment
프로시저에 대한 주석입니다.
procedure_comment은 리터럴이어야 합니다STRING. 기본값은NULL입니다.기본 데이터 정렬 UTF8_BINARY
적용 대상:
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!