적용 대상:
Databricks SQL
Databricks Runtime 16.3 이상
중요하다
이 기능은 공개 프리뷰.
SQL/PSM 표준 기반 스크립팅 구문을 사용하여 강력한 절차 논리를 사용할 수 있습니다.
모든 SQL 스크립트는 복합 문 블록(BEGIN ... END)으로 구성되고 시작됩니다.
복합 문은 예외를 catch하는 데 사용되는 지역 변수, 사용자 정의 조건 및 조건 처리기를 선언하는 섹션으로 시작합니다.
이 뒤에는 다음으로 구성된 복합 문 본문이 있습니다.
- 흐름 제어 문에는 조건자 식에 대한 루프, 쿼리 결과에 대한 FOR 루프, IF 및 CASE같은 조건부 논리, LEAVE 및 ITERATE같은 루프를 중단하는 수단이 포함됩니다.
-
ALTER,CREATE,DROP같은 DDL 문. - DCL(데이터 제어) 문장(예: GRANT 및 REVOKE)과 같은.
- DML 문장은 INSERT, UPDATE, 의 DELETE및 의 MERGE입니다.
- 스크립트의 호출자에게 결과 집합을 반환하는 쿼리.
- SET 지역 변수와 세션 변수를 설정하는 문.
- EXECUTE IMMEDIATE 문입니다.
- 변수, 조건 및 조건 처리기에 대한 중첩된 범위를 제공하는 중첩된 복합 문입니다.
호출자와 복합 문 간에 데이터 전달
SQL 스크립트와 데이터를 전달하는 방법에는 두 가지가 있습니다.
- 세션 변수를 사용하여 스칼라 값 또는 작은 배열 집합 또는 맵을 한 SQL 스크립트에서 다른 SQL 스크립트로 전달합니다.
- 매개 변수 표식을 사용하여 스칼라 값 또는 작은 배열 집합을 전달하거나 Notebook 위젯, Python 또는 다른 언어의 데이터를 SQL 스크립트에 매핑합니다.
변수 범위 지정
복합 문 내에 선언된 변수는 복합 문 내의 모든 식에서 참조할 수 있습니다. Databricks는 이름 확인에 설명된 규칙에 따라 가장 안쪽 범위에서 바깥쪽 범위로 식별자를 해석합니다. 선택적 복합 문 레이블을 사용하여 중복된 변수 이름을 구분할 수 있습니다.
조건 처리
SQL 스크립팅은 SQL 스크립트에서 발생하는 예외를 가로채고 처리하는 조건 처리기를 EXIT 처리를 위해 지원합니다.
조건 처리기 내에서 원래 예외를 SIGNAL 예외 없이 복합 문을 종료할 수 있습니다.
조건 처리기는 다음과 같은 세 가지 고유한 조건 클래스를 처리하도록 정의할 수 있습니다.
DIVIDE_BY_ZERO또는 사용자가 선언한 조건과 같은 특정 Databricks 정의 오류 클래스일 수 있는 하나 이상의 명명된 조건입니다. 이러한 처리기는 이러한 특정 조건을 처리합니다.Databricks 또는 사용자
SQLSTATE문에 의해 발생할 수 있는SIGNAL하나 이상. 이러한 처리기는 해당SQLSTATE연결된 모든 조건을 처리할 수 있습니다.제네릭
SQLEXCEPTION처리기는SQLEXCEPTION에 속하는 모든 조건들(SQLSTATE이 아니고XX***가 아닌 모든02***)을 모두 포착할 수 있습니다.
다음은 예외에 적용되는 조건 처리기를 결정하는 데 사용됩니다. 이 조건 처리기는 가장 적합한 처리기호출됩니다.
조건 처리기는 그 자체의 본문이나 같은 복합 문에서 선언된 다른 조건 처리기의 본문에 정의된 문에 적용할 수 없습니다.
예외가 발생한 가장 안쪽 복합 문에 정의된 해당 조건 처리기가 적절합니다.
둘 이상의 적절한 처리기를 사용할 수 있는 경우 가장 구체적인 처리기가 가장 적합합니다. 예를 들어 명명된 조건의 처리기는 명명된
SQLSTATE하나보다 더 구체적입니다. 제네릭EXCEPTION처리기는 가장 구체적이지 않습니다.
처리기가 자체 조건을 SIGNALRESIGNAL않는 한, 조건 처리기의 결과는 다음으로 실행할 처리기를 선언한 복합 문 다음에 문을 실행하는 것입니다.
SQL 저장 프로시저
중요하다
이 기능은 공개 프리뷰.
적용 대상:
Databricks SQL
Databricks Runtime 17.0 이상
CREATE PROCEDURE 문을 사용하여 Unity 카탈로그에서 SQL 스크립트를 유지할 수 있습니다. 그런 다음 다른 보안 주체에게 절차에 대한 액세스 권한을 부여할 수 있습니다. 그런 다음 이러한 주요 인물들은 CALL 문을 사용하여 프로시저를 호출할 수 있습니다.
제어 흐름 명령 목록
다음은 지원되는 제어 흐름 문 목록입니다.
- CASE 문
- BEGIN END 복합문
- FOR 문
- GET 진단 문
- IF THEN ELSE 문장
- ITERATE 문
- LEAVE 문
- LOOP 문
- REPEAT 문
- RESIGNAL 문
- SIGNAL 문
- WHILE 문
관련 문서
- CREATE PROCEDURE
- DROP PROCEDURE (프로시저 삭제)
- 외침