<budget_name>!ADD_CUSTOM_ACTION

예상 지출 또는 실제 지출이 지정된 임계값에 도달할 때 프로시저가 호출되도록 저장 프로시저를 예산과 연결합니다. 프로시저는 :doc:`참조 </sql-reference/references>`로 연결되어야 합니다.

자세한 내용은 예산에 대한 사용자 지정 작업 섹션을 참조하십시오.

구문

<budget_name>!ADD_CUSTOM_ACTION (
  { '<stored_procedure_reference>' | <reference_statement> },
  { <array_of_arguments> | <array_construct_statement> },
  [ { 'ACTUAL' | 'PROJECTED' }, ]
  <threshold> )
Copy

인자

'stored_procedure_reference'

프로시저로 확인되는 직렬화된 문자열 표현입니다. 이 문자열은 SYSTEM$REFERENCE 함수의 출력입니다.

reference_statement

예산과 연결할 프로시저에 대한 참조를 생성하는 SYSTEM$REFERENCE 문입니다.

array_of_arguments

저장 프로시저에 전달할 인자의 배열입니다.

array_construct_statement

0개, 1개 또는 그 이상의 입력으로 생성된 배열을 반환하는 ARRAY_CONSTRUCT 문입니다.

{ 'ACTUAL' | 'PROJECTED'}

실제 지출 또는 예상 지출을 기준으로 작업을 트리거할지 여부를 제어합니다.

'ACTUAL' — 실제 지출이 threshold`에 도달하면 저장 프로시저가 호출됩니다. :code:’PROJECTED` — 지출이 :samp:`{threshold}`에 도달할 것으로 예상되면 저장 프로시저가 호출됩니다.

생략하는 경우 기본값은 ``PROJECTED``입니다.

threshold

예산 한도의 백분율입니다. Snowflake가 실제 또는 예상 지출이 예산 한도의 이 비율을 초과한다고 판단하는 경우 저장 프로시저가 호출됩니다.

0에서 1,000(포함) 사이의 숫자를 지정합니다.

반환

프로시저가 예산과 성공적으로 연결되었는지 여부를 나타내는 VARCHAR 값을 반환합니다.

프로시저를 예산과 연결할 수 없는 경우 메서드는 오류 메시지를 반환합니다.

액세스 제어 요구 사항

예산에 대해 이 메서드를 호출하려면 다음 권한과 역할이 필요합니다.

  • 예산 인스턴스에 대한 ADMIN 인스턴스 역할.

  • 예산 인스턴스가 포함된 데이터베이스와 스키마에 대한 USAGE 권한.

  • 저장 프로시저가 포함된 데이터베이스 및 스키마에 대한 USAGE 권한.

  • 저장 프로시저에 대한 USAGE 권한.

자세한 내용은 예산 역할 및 권한 섹션을 참조하십시오.

사용법 노트

  • 이 메서드를 호출해도 오브젝트는 반환되지 않습니다. 이로 인해, 메서드 연결을 사용하여 이 메서드의 반환값으로 다른 메서드를 호출할 수 없습니다. 대신, 별도의 SQL 문에서 각 메서드를 호출합니다.

지출이 예산 한도의 75%에 도달할 것으로 예상될 때 호출되도록 alert_team 저장 프로시저와 budget_db.sch1.my_budget 예산을 연결합니다.

CALL budget_db.sch1.my_budget!ADD_CUSTOM_ACTION(
  SYSTEM$REFERENCE('PROCEDURE', 'code_db.sch1.alert_team(string, string, string)', 'SESSION', 'USAGE'),
  ARRAY_CONSTRUCT('admin@example.com', 'Budget Alert', 'Spending at 75% of budget limit'),
  'PROJECTED',
  75);
Copy

지출이 예산 한도의 90%에 도달한 경우 호출되도록 alert_team 저장 프로시저와 budget_db.sch1.my_budget 예산을 연결합니다.

CALL budget_db.sch1.my_budget!ADD_CUSTOM_ACTION(
  SYSTEM$REFERENCE('PROCEDURE', 'code_db.sch1.alert_team(string, number)', 'SESSION', 'USAGE'),
  ARRAY_CONSTRUCT('Critical budget threshold', 90),
  'ACTUAL',
  90);
Copy