<budget_name>!ADD_CUSTOM_ACTION

将存储过程与预算关联,以便在预计或实际支出达到指定阈值时调用该过程。该过程必须通过 引用 方式进行关联。

有关更多信息,请参阅 预算的自定义操作

语法

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

实参

'stored_procedure_reference'

解析为过程的序列化字符串表示形式。此字符串是 SYSTEM$REFERENCE 函数的输出。

reference_statement

SYSTEM$REFERENCE 语句,用于为要与预算关联的过程创建引用。

array_of_arguments

要传递给存储过程的实参数组。

array_construct_statement

ARRAY_CONSTRUCT 语句,返回由零个、一个或多个输入构造的数组。

{ 'ACTUAL' | 'PROJECTED'}

控制操作是基于实际支出还是预计支出触发。

'ACTUAL' --- 当实际支出达到 threshold 时调用存储过程。'PROJECTED --- 当预计支出将达到 threshold 时调用存储过程。

如果省略,默认为 PROJECTED

threshold

预算限额的百分比。当 Snowflake 判定实际或预计支出超过此预算限额百分比时,将调用该存储过程。

请指定一个介于 0 到 1,000 之间(含 0 和 1,000)的数字。

返回

返回一个 VARCHAR 值,用于指明过程是否已成功与预算相关联。

如果无法将过程与预算关联,该方法将返回一条错误消息。

访问控制要求

要为预算调用此方法,需要具备以下权限和角色:

  • 预算实例的 ADMIN 实例角色

  • 对包含预算实例的数据库和架构的 USAGE 权限。

  • 对包含存储过程的数据库和架构的 USAGE 权限。

  • 对存储过程的 USAGE 权限。

有关更多信息,请参阅 Budgets 角色和权限

使用说明

  • 调用此方法不会返回对象。因此,您无法使用方法链来调用此方法返回值上的另一个方法。相反,应在单独 SQL 语句中调用每个方法。

示例

alert_team 存储过程与 budget_db.sch1.my_budget 预算相关联,以便在支出预计达到预算限额的 75% 时调用:

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);

alert_team 存储过程与 budget_db.sch1.my_budget 预算相关联,以便在支出达到预算限额的 90% 时调用:

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);