雪花存储过程给出类似“Uncaught ReferenceError”之类的错误?

Posted

技术标签:

【中文标题】雪花存储过程给出类似“Uncaught ReferenceError”之类的错误?【英文标题】:snowflake stored procedure giving error like "Uncaught ReferenceError"? 【发布时间】:2021-05-24 10:15:06 【问题描述】:

我尝试执行下面的查询,它会抛出类似“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"

【问题讨论】:

【参考方案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”

以上是关于雪花存储过程给出类似“Uncaught ReferenceError”之类的错误?的主要内容,如果未能解决你的问题,请参考以下文章

雪花存储在使用抛出错误而不是返回错误时给出不同的错误

我们可以像在 SQL Server 中那样加密雪花中的存储过程吗?

如何使用雪花存储过程将变量数据传递到雪花表中

避免雪花中存储过程的重复

雪花存储过程中的事务

Python Glue 作业 - 雪花存储过程未返回确切的错误消息