gpt4 book ai didi

snowflake-cloud-data-platform - 无法识别 Snowflake 存储过程参数

转载 作者:行者123 更新时间:2023-12-04 13:10:57 30 4
gpt4 key购买 nike

我正在构建雪花存储过程,但在使用雪花过程中传递的参数时遇到困难。

create or replace procedure dumper(n float)
returns float
language javascript
execute as caller
as
$$

var text = "select file_name from table(information_schema.COPY_HISTORY(TABLE_NAME=> 'records', start_time=> dateadd(hours, ?, current_timestamp())));";
var statement = snowflake.createStatement({sqlText: text, binds: [n]});
var result = statement.execute();
return statement.getRowCount();
$$
;

正在尝试调用上述过程

call dumper(-2);

导致如下错误

JavaScript execution error: Uncaught ReferenceError: n is not defined in DUMPER at ' var statement = snowflake.createStatement({sqlText: text, binds: [n]});' position 70 stackstrace: DUMPER line: 4

我尝试使用在 here 上讨论的插值法但这也没有成功。

有关如何处理传递的参数的任何线索。

最佳答案

您必须在 JavaScript 代码中将“N”大写:

var statement = snowflake.createStatement({sqlText: text, binds: [N]});

传递给 Snowflake 存储过程的变量在进入 JavaScript 之前与其他对象名称一样。如果它们没有被双引号括起来,则 Snowflake 会隐式地将它们大写。请记住将传递给 Snowflake 中的 SP 和 UDF 的所有参数都大写。使用 JavaScript 在 SP 或 UDF 中定义的变量遵循该语言的一般规则。

由于常规规则适用于 Snowflake 标识符,就像它们适用于传递给过程和函数的变量一样,如果您想使用小写或混合大小写的变量名称,则可以将参数用双引号引起来:

create or replace function echo_string("n" string)
returns string
language javascript
as
$$
return n; // This works because "n" is double quoted in the signature
$$;

select echo_string('Hello world.');

关于snowflake-cloud-data-platform - 无法识别 Snowflake 存储过程参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65394900/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com