当前位置: 首页 > 知识库问答 >
问题:

无法识别雪花存储过程参数

湛宏旷
2023-03-14
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

关于如何使用传递的参数的任何线索。

共有1个答案

郜俊健
2023-03-14

必须在JavaScript代码中大写“n”:

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

传递到Snowflake存储过程中的变量在JavaScript中之前的行为与其他对象名类似。如果它们没有双引号,那么雪花会隐式地将它们大写。记住在雪花中传递给SPs和UDF的所有参数都要大写。使用JavaScript在SP或UDF中定义的变量遵循该语言的常规规则。

由于常规规则适用于雪花标识符,就像适用于传递到过程和函数中的变量一样,所以如果希望使用较低或混合大小写变量名,可以双引号参数:

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.');
 类似资料:
  • 1选定列的参数(选定的筛选器/下拉属性或从UI发送的列名) 2 dynamic where子句的参数,用于为点1中选择的类似下拉列表值准备 从视图中获取数据,并以这种方式检索结果 注意:在这一点上没有要求显示特定于某个用户的数据。同样忽略上面代码中的参数插值部分 是否存在任何数据完整性问题,不同的用户将看不到UI上更新的值(为了提供更多的上下文,从此过程中的视图中提取数据,并且该视图数据在应用程序

  • 我在雪花中有一个字符串值如下;

  • 无法识别数值“ABC_0011O00001Y31VPQAI” 检查表DDL,发现只有3列定义为NUMBER,而rest定义为VARCHAR。 我检查了SELECT查询,在这些NUMBER Datatype列中没有找到任何字符串值。我还尝试在所有Varchar列中搜索值'ABC_0011O00001Y31VPQAI',但没有找到任何 我知道一件事,雪花并不总是显示正确的错误。我是不是漏掉了什么?有什

  • 有一个财政季度列,我想在同一行中添加一个显示上一个季度的列。我已经成功地用下面的逻辑在画面中做到了这一点。 当我尝试在雪花中这样做时,虽然我不断得到这个“数值”是不被识别的错误。有什么想法如何修复?下面是我尝试的。

  • 我正在重新设计我们公司的API以使用来自SQL Server的Snowflake。我们的第一个直接障碍是现有的SQL Server存储过程返回表输出,而Snowflake不允许这种类型的输出。我不想完全重新设计一切,所以我在想: null 我知道对于编码来说,使用python这样的东西会容易得多,但是,我不想维护另一个python应用程序,只用于在Snowflake中检索数据。