Snowflake存储过程出现BIND VARIABLE NOT SET错误求助
Snowflake存储过程绑定变量错误解决方法
你的存储过程报错是因为动态SQL中的绑定变量未传递参数值,修改方法如下:
修改后的存储过程代码:
CREATE OR REPLACE PROCEDURE sp_name(TASKNUM FLOAT) RETURNS STRING LANGUAGE SQL AS $$ DECLARE sqlcom STRING; BEGIN sqlcom := 'INSERT INTO task_tracker VALUES (''TASK_SP_CALL'' || :TASKNUM, CURRENT_TIMESTAMP(), ''Task Done - TASK_SP_CALL Remarks'', ''Active'')'; -- 添加USING子句传递存储过程参数给绑定变量 EXECUTE IMMEDIATE sqlcom USING TASKNUM; RETURN 'Succeeded'; EXCEPTION WHEN OTHER THEN RETURN 'Failed: ' || SQLERRM; END; $$;
错误原因说明
- 原代码执行
EXECUTE IMMEDIATE sqlcom时,动态SQL里的:TASKNUM绑定变量没有对应的参数值传入,导致SQL编译失败。 - 通过
USING TASKNUM子句,将存储过程的输入参数TASKNUM传递给动态SQL中的绑定变量,Snowflake就能正确解析变量值。
修改后执行call sp_name(2)即可正常运行,无需硬编码参数。
内容的提问来源于stack exchange,提问作者DEB
相关产品推荐
相关产品推荐

