Javascript 如何在snowflake中调用另一个过程中的过程
下面是我的存储过程,它检索表的所有列名。我想在另一个过程中调用这个过程Javascript 如何在snowflake中调用另一个过程中的过程,javascript,sql,stored-procedures,snowflake-cloud-data-platform,Javascript,Sql,Stored Procedures,Snowflake Cloud Data Platform,下面是我的存储过程,它检索表的所有列名。我想在另一个过程中调用这个过程 CREATE OR REPLACE PROCEDURE get_columns(TABLE_NAME VARCHAR) RETURNS ARRAY LANGUAGE JAVASCRIPT AS $$ var stmt = snowflake.createStatement({ sqlText: "SELECT * FROM " + TABLE_NAME + " LIMIT 1;"
CREATE OR REPLACE PROCEDURE get_columns(TABLE_NAME VARCHAR)
RETURNS ARRAY
LANGUAGE JAVASCRIPT
AS
$$
var stmt = snowflake.createStatement({
sqlText: "SELECT * FROM " + TABLE_NAME + " LIMIT 1;",
});
stmt.execute();
var cols=[];
for (i = 1; i <= stmt.getColumnCount(); i++) {
cols.push(stmt.getColumnName(i));
}
return cols
$$;
我没有看到任何“大”错误。。。也许在调用get_columns('Table_Name')后添加分号会有所帮助?(对我来说,这里没有分号也可以用,所以我认为这不是问题所在)
最重要的是,$$后面没有分号(可能是脚本中稍后的一些代码导致了错误)
更多信息可在此处找到
最后一个提示可能是您的表的访问权限。我没有看到任何“大”错误。。。也许在调用get_columns('Table_Name')后添加分号会有所帮助?(对我来说,这里没有分号也可以用,所以我认为这不是问题所在)
最重要的是,$$后面没有分号(可能是脚本中稍后的一些代码导致了错误)
更多信息可在此处找到
最后一个提示可能是对表的访问权限。您遇到的问题是没有迭代resultset arr。您可以在代码中执行以下操作:
CREATE OR REPLACE PROCEDURE get_data() //procedure call the above procedure
RETURNS ARRAY
LANGUAGE JAVASCRIPT
AS
$$
var arr = [];
var r = snowflake.createStatement({sqlText: "call get_columns('TABLE_NAME')"});
arr = r.execute();
arr.next();
return arr.getColumnValue(1);
$$;
call get_data();
您遇到的问题是没有迭代resultset arr。您可以在代码中执行以下操作:
CREATE OR REPLACE PROCEDURE get_data() //procedure call the above procedure
RETURNS ARRAY
LANGUAGE JAVASCRIPT
AS
$$
var arr = [];
var r = snowflake.createStatement({sqlText: "call get_columns('TABLE_NAME')"});
arr = r.execute();
arr.next();
return arr.getColumnValue(1);
$$;
call get_data();
您的错误信息/输出是什么?那么到底出了什么问题?@Marcel我得到的是“返回值不是数组”@Marcel这是返回一个[object object]奇怪的是,为什么要使用SP来返回数组,而不是使用UDTF和返回表。也许对你更有用…@Marcel,没关系,我知道了。谢谢。你的错误信息/输出是什么?那么到底出了什么问题?@Marcel我得到的是“返回值不是数组”@Marcel这是返回一个[object object]奇怪的是,为什么要使用SP来返回数组,而不是使用UDTF和返回表。也许对你更有用…@Marcel,没关系,我知道了。谢谢