【问题标题】:snowflake stored procedure giving error like "Uncaught ReferenceError"?雪花存储过程给出类似“Uncaught ReferenceError”之类的错误?
【发布时间】:2026-01-12 07:50:02
【问题描述】:

我尝试执行下面的查询,它会抛出类似“Uncaught ReferenceError: float_param1”的错误

create or replace table test1(num_col1 number);

create or replace procedure rt(float_param1 float )
returns string 
language javascript 
as
$$
var sql_command=
 "insert into test1 (num_col1) values ("+ float_param1 +")";

snowflake.execute(
    {sqltext:sql_command}
    );
return 'succes.';
$$ 
;
call rt(12.23::float);

错误类似于“JavaScript 执行错误:未捕获的 ReferenceError:float_param1 未在 RT 中定义”“插入 test1 (num_col1) 值 (“+ float_param1 +”)”;'位置 42 stackstrace:RT 行:3"

【问题讨论】:

    标签: javascript snowflake-cloud-data-platform snowflake-schema


    【解决方案1】:

    输入参数在存储过程中应为大写。

    var sql_command= "插入 test1 (num_col1) 值 ("+ FLOAT_PARAM1 +")";

    【讨论】:

    • 感谢您的快速回复,在上述更改之后,它给出了类似“存储过程 RT 中的执行错误:空参数在 Snowflake.execute,第 3 行位置 10 传递的错误”
    • 创建或替换过程 test_proc1(float_param1 float) 返回字符串语言 JAVASCRIPT AS $$ var return_value = ''; var V_SQL = insert into test1 (num_col1) values(:1); var EXEC_V_SQL = snowflake.createStatement({sqlText: V_SQL, binds: [ FLOAT_PARAM1 ]}) try{ EXEC_V_SQL.execute(); return_value = "成功"; } catch(err){ return_value = "错误"; } 返回返回值; $$;
    • 谢谢,它正在工作,但为什么我收到错误“FLOAT_PARAM1”