Snowflake cloud data platform 如何在存储过程中使用Show命令-不工作

Snowflake cloud data platform 如何在存储过程中使用Show命令-不工作,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,跟随沼泽柱 我得到的结果是NaN,这是有意义的,因为返回值在这篇博客文章中设置为浮动 我曾尝试将返回值设置为varchar、string等,但得到了不同的结果,如Object等 创建或替换过程车间(CMD VARCHAR) 返回float not null 语言JAVASCRIPT 以调用方身份执行 作为$$ var stmt=snowflake.createStatement( { sqlText:${CMD} } ); var res=stmt.execute(); 返回res $$ ; 预

跟随沼泽柱

我得到的结果是NaN,这是有意义的,因为返回值在这篇博客文章中设置为浮动

我曾尝试将返回值设置为varchar、string等,但得到了不同的结果,如Object等

创建或替换过程车间(CMD VARCHAR) 返回float not null 语言JAVASCRIPT 以调用方身份执行 作为$$ var stmt=snowflake.createStatement( { sqlText:
${CMD}
} );

var res=stmt.execute(); 返回res $$ ;

预期的返回是一个表列表,实际结果为NaN。

调用
stmt.execute()
返回一个
ResultSet
对象,该对象在转换为
FLOAT
时将变为
NaN
。您需要使用
ResultSet
对象来提取查询返回的数据。
还要记住,JavaScript中的变量引用是简单的,即
CMD

如果您希望“预期收益是一个表列表”,则返回类型
FLOAT
将不起作用。我怀疑您想要的是
数组
或完全灵活的
变体
。这两种方法都适用于以下方面:

$$
  var stmt = snowflake.createStatement( { sqlText: CMD } );
  var rs = stmt.execute();
  var result = [];
  while (rs.next())
    result.push(rs.getColumnValue(1));
  return result;
$$;
有关详细信息,请参阅文档

如果有多列,代码会变得稍微复杂一些:

  var result = [], row, col;
  while (rs.next()) {
    row = [];
    for (col = 1; col <= stmt.columnCount; col++)
      row.push(rs.getColumnValue(col));
    result.push(row);
  }
最后一个变量,其中第一个结果行包含列名,以下行包含结果集中的数据,可作为结果[行][列]访问:

var result =
    [ Array.from({ length: stmt.columnCount }, (v, i) => stmt.getColumnName(i + 1)) ];
while (rs.next()) result.push(result[0].map(cn => rs.getColumnValue(cn)));
stmt.execute()
调用返回一个
ResultSet
对象,该对象在转换为
FLOAT
时将变为
NaN
。您需要使用
ResultSet
对象来提取查询返回的数据。
还要记住,JavaScript中的变量引用是简单的,即
CMD

如果您希望“预期收益是一个表列表”,则返回类型
FLOAT
将不起作用。我怀疑您想要的是
数组
或完全灵活的
变体
。这两种方法都适用于以下方面:

$$
  var stmt = snowflake.createStatement( { sqlText: CMD } );
  var rs = stmt.execute();
  var result = [];
  while (rs.next())
    result.push(rs.getColumnValue(1));
  return result;
$$;
有关详细信息,请参阅文档

如果有多列,代码会变得稍微复杂一些:

  var result = [], row, col;
  while (rs.next()) {
    row = [];
    for (col = 1; col <= stmt.columnCount; col++)
      row.push(rs.getColumnValue(col));
    result.push(row);
  }
最后一个变量,其中第一个结果行包含列名,以下行包含结果集中的数据,可作为结果[行][列]访问:

var result =
    [ Array.from({ length: stmt.columnCount }, (v, i) => stmt.getColumnName(i + 1)) ];
while (rs.next()) result.push(result[0].map(cn => rs.getColumnValue(cn)));