You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake存储过程运行时如何获取自身被调用的query id?

报错&实现逻辑错误原因

  • last_query_id()取的是当前会话中已经执行完成的上一条查询的ID,存储过程运行过程中自身的CALL语句还处于执行状态,无法被该函数捕获
  • 存储过程内部执行select last_query_id()属于新的独立查询,即使运行成功也只会返回存储过程内部上一条执行完成的语句ID,不是存储过程自身的调用ID

正确实现方案

Snowflake的JavaScript存储过程提供了内置方法snowflake.getQueryId(),可以直接获取当前正在运行的存储过程自身的调用QUERY ID,无需额外执行SQL查询。

修正后的存储过程代码如下:

create or replace procedure test_proc111
("SRC" VARCHAR(30),  "TGT" VARCHAR(30))
returns varchar
language javascript
execute as owner
as
$$
var sp_call_query_id = snowflake.getQueryId();
// 此处可添加你的业务逻辑,将ID存入变量/写入目标表等
return sp_call_query_id;
$$;

调用验证:

call test_proc111('TEST','TARGET');

调用完成后执行select last_query_id(),返回结果和存储过程返回的ID完全一致,可验证正确性。


内容的提问来源于stack exchange,提问作者rita mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:24:04