Snowflake 存储过程,检查结果集是否为空而不抛出错误

Snowflake stored procedure, check if a resultset is empty without throwing an error

与我打开的另一个雪花问题有点相关

有没有办法检查结果集是否为空?例如

var query = `SELECT * FROM somewhere`
var stmt = snowflake.createStatement({sqlText: query});
var result = stmt.execute();
result.next()
var colCount = stmt.getColumnCount();

如果结果集中没有返回数据,则会出错。它说

Failed Code 100183 State P0000 Message ResultSet is empty or not prepared, call next() first

我试着翻转它只是为了看看会发生什么。

var query = `SELECT * FROM somewhere`
var stmt = snowflake.createStatement({sqlText: query});
var result = stmt.execute(); 
var colCount = stmt.getColumnCount();
result.next();

看起来这两行 var colCount = stmt.getColumnCount();result.next(); 抛出相同的错误,无论顺序如何。我怀疑错误是因为结果集是空的。如果我的怀疑是正确的,那么我需要另一种方法来检查。有没有一种安全的方法可以在抛出此错误之前检查结果中是否有任何数据?

您可以通过这种方式获取结果集的计数:

statement.getRowCount();

在你的代码中,你会这样做:

var query = `SELECT * FROM somewhere`
var stmt = snowflake.createStatement({sqlText: query});
var result = stmt.execute();
if (stmt.getRowCount() > 0) {
    result.next()
    var colCount = stmt.getColumnCount();
} else {
    // Do something here if no rows in the resultset.
}