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